eri*_*bae 8 javascript asynchronous node.js async.js
试着让我的头脑使用NodeJS的Async模块.
我有以下代码.
var a1 = [1,2,3,4,5,6,7,8];
async.forEachSeries(a1, function(n1, callback) {
console.log(n1);
var a2 = [10,11,12,13,14];
async.forEachSeries(a2, function(n2, callback) {
console.log(n1 + " " + n2);
callback();
});
callback();
});
Run Code Online (Sandbox Code Playgroud)
我想以打印输出的方式完成上述代码的处理
1
1 10
1 11
1 12
1 13
1 14
2
2 10
2 11
2 12
2 13
2 14
3
3 10
3 11
3 12
3 13
3 14
.....
Run Code Online (Sandbox Code Playgroud)
但相反,我得到的东西...
1
1 10
2
2 10
1 11
3
3 10
2 11
1 12
....
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
小智 15
完成所有操作后,forEachMethod也会接受回调.所以你的代码应该是这样的:
var a1 = [1,2,3,4,5,6,7,8];
async.forEachSeries(a1, function(n1, callback_s1) {
console.log(n1);
var a2 = [10,11,12,13,14];
async.forEachSeries(a2, function(n2, callback_s2) {
console.log(n1 + " " + n2);
callback_s2();
}, function () {
/* Finished the second series, now we mark the iteration of first series done */
callback_s1();
} );
});
Run Code Online (Sandbox Code Playgroud)
您的代码中的问题是您假设async.forEachSeries是同步的,但事实并非如此.它保证了数组将被同步处理的事实,但函数本身是异步的.