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」が表示され、coffeescript の暗黙的な戻り値の使用に問題があるようです (推測します)。 )。

添付されているのは、上記の coffeescript からコンパイルされた 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

あなたは多くの問題を抱えています。1 つ目は、正しい引数を に渡していないことですasync.series。以下が期待されます。

async.series([functions...], callback)

あなたが電話している間

async.series(function, function)

最初の関数のlength属性は定義されていないため、空の配列と見なされ、「コールバック」(2 番目の関数) に直接スキップされます。2 つの関数の配列を渡し、コールバックを省略したい場合があるようです。

2 つ目の問題は、進行を継続するために、 に渡された関数が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 に答える