1

我想得到

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”,并且咖啡脚本使用隐式返回似乎存在问题,(我猜)。

附件是从上述咖啡脚本编译的 javascript 输出的屏幕截图。

在此处输入图像描述

4

2 回答 2

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
于 2013-10-31T03:02:46.480 回答
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忽略您传递给它的大多数(全部?)函数的返回值。

于 2013-10-31T03:20:15.750 回答