一、回調函數javascript
fn1( fn2 );java
二、事件監聽node
fn1.on('done', fn2); function fn1() { setTimeout(function(){ fn1.trigger('done'); },1000) }
三、發佈-訂閱git
(1)fn2像「信號中心」訂閱了done信號 Jquery.subscribe("done", fn2); (2) fn1向信號中心發佈信號 function fn1(){ setTimeout(function(){ Jquery.publish("done"); },2000) }
四、 promisesgithub
fn1().then(fn2); function fn1(){ var dfd = $.Deferred(); setTimeout(function(){ resolve(); },2000); }
五、generatorjson
var fetch = require('node-fetch'); function * gen(){ var url = "xxxxx.github"; var result = yelid fetch(url); console.log(result.do); } var g = gen(); var result = g.next(); result.value.then(function(data){ return data.json(); }).then(function(data){ g,next(data) })
六、 async 函數promise
async function getStockPriceByName(name) { var symbol = await getStockSymbol(name); var stockPrice = await getStockPrice(symbol); return stockPrice; } getStockPriceByName('goog').then(function (result) { console.log(result); });