我想要
testFunction: () ->
console.log "testFunction"
async.series(
(->
console.log "first"
),
(->
console.log "second"
)
)
我也试过没有成功
testFunction: () ->
console.log "testFunction"
async.series(
(->
console.log "first"
return undefined
),
(->
console.log "second"
return undefined
)
)
运行,我希望控制台输出“testFunction”,“first”,“second”,但我得到“testFunction”,“second”,看起来coffeescript使用隐式返回有问题, (我猜)。
附件是从上面的coffeescript编译的javascript输出的屏幕截图。
答案 0 :(得分:5)
每个为异步工作的函数都需要将回调作为唯一的参数。
one = (callback) ->
console.log "one"
callback()
two = (callback) ->
console.log "two"
callback()
testFunction: () ->
console.log "testFunction"
async.series [one, two], (error) ->
console.log "all done", error
答案 1 :(得分:3)
你遇到了很多问题。第一个是你没有将正确的参数传递给async.series
。它期望:
async.series([functions...], callback)
在你打电话的时候
async.series(function, function)
由于第一个函数的length
属性未定义,因此它假定它是一个空数组并直接跳到“回调”(第二个函数)。听起来你可能希望传递两个函数的数组并省略回调。
第二个问题是传递给async.series
的函数必须调用回调才能继续进行。回调是每个函数的第一个参数:
testFunction: () ->
console.log "testFunction"
async.series([
((next) ->
console.log "first"
next()
),
((next) ->
console.log "second"
next()
)
])
async
忽略传递给它的大多数(所有?)函数的返回值。