使用coffeescript代码 One solution | see this post
我有两个循环。我想从数组'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()
答案 0 :(得分: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