CoffeeScript 1.9 開始提供了類似ES6的yield關鍵字。 自己結合co和bluebird做了個試驗。
co --?http://npmjs.org/package/co ?-- for generator
bluebird -- https://www.npmjs.com/package/bluebird??for Promise
co = require 'co' Promise = require 'bluebird'msg = "good" func1 = () ->new Promise((resolve)->setTimeout(()->console.log "func1"resolve({a:10,b:2}), 1000))func2 = (opts) ->{a,b}= optsnew Promise((resolve, reject)->setTimeout(()->console.log "func2", a, bconsole.log msgresolve(a * b * 2), 1000))func3 = (r)->new Promise((resolve)->console.log "the result is #{r}"resolve()) func4 = ()->new Promise (resolve)->console.log "done"resolve()calc1= (r) ->yield func3(r)yield func4()calc = ()->opts = yield func1()r = yield func2(opts)yield calc1(r) # yield func3(r) # yield func4()co(calc)
?