1

Coffeescriptを使用して 1つのソリューションをコーディングする| この投稿を参照してください

2つのループがあります。配列「a」から各値を取得し、「b」のすべての値をループして処理し、配列「a」の次の値に移動します。

期待される出力:

1 a b c
2 a b c
3 a b c

私が見るエラー:

 [ 1, 2, 3 ]

 [ 'a', 'b', 'c' ]

 1
 2
 3

 TypeError: Cannot read property 'length' of undefined
   at Object.forEachSeries(~/src/node_modules/async/lib/async.js:103:17)




  Async = require('async')

  @a = [1,2,3]
  @b = ['a','b','c']

  console.dir @a
  console.dir @b

  Async.forEachSeries @a, (aa , cbLoop1) ->
    console.log aa
    cbLoop1()
    Async.forEachSeries @b, (bb , cbLoop2) ->
      #here will be some callback that I need to process before moving to next value in
      #b array
      console.log bb
      cbLoop2()
4

1 に答える 1

2

最初のAsync.forEachSeries呼び出しはコールバックを受け取ります。これにより、this

Async.forEachSeries @a, (aa , cbLoop1) ->
  # inside the callback, the value of `this` has changed,
  # so @b is undefined!

=>構文を使用してthis、コールバック内の値を保持します。

Async.forEachSeries @a, (aa , cbLoop1) =>
  console.log aa
  cbLoop1()
  Async.forEachSeries @b, (bb , cbLoop2) ->
    # use `=>` again for this callback if you need to access this (@) inside
    # this callback as well
于 2012-12-02T00:28:47.450 に答える