节点异步推送循环

汤玛士

我有一个异步功能,我想在一定范围内为我执行。我尝试了这个:

var async = require('async');

function main(a, b){

    var funcs = [];

    for(var i=a; i<=b; i++){
        var txt = "func "+i;

        funcs.push(function(callback){
            console.log(i);
            console.log(txt);
            callback(null, null);
        });
    }

    async.parallelLimit(funcs, 10, function(){
        console.log("done");
    });

}

main(1,5);

输出为:

6
func 5
6
func 5
6
func 5
6
func 5
6
func 5
done

为什么我没有“ func 6”?顺便说一句我想要1 2 3 4 5 ...

谢谢

爆炸物

您的函数将在循环完成后执行。因此after循环i将是相等的6,并且txt将是相等的func 5将循环的内容放入闭包进行修复:

for(var i=a; i<=b; i++){
    (function(i) {
        var txt = "func "+i;

        funcs.push(function(callback){
            console.log(i);
            console.log(txt);
            callback(null, null);
        });
    })(i);
}

PSECMAScript 6(即将发布的JavaScript规范)中,有一些let变量可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用节点异步循环将 EXIF 图像数据推送到数组中

来自分类Dev

节点 - 在 for 循环中的异步瀑布

来自分类Dev

异步与循环功能任务列表节点js

来自分类Dev

异步将数据推送到节点中的数组

来自分类Dev

使用递归进行异步循环:如何访问推送数组数据?

来自分类Dev

嵌套异步循环推送到异步队列而不调用主回调

来自分类Dev

延迟节点js中的每个循环迭代,异步

来自分类Dev

节点FTP:循环内有多个异步调用

来自分类Dev

节点异步阵列循环结果与预期不符

来自分类Dev

嵌套异步循环中的节点 MySQL 两个查询

来自分类Dev

承诺中的承诺是最佳解决方案吗?for循环内读取异步节点文件

来自分类Dev

如何在节点js中以异步函数为条件编写循环

来自分类Dev

使用带有异步函数和 setTimeout 的 while 循环。节点

来自分类Dev

节点异步路由代码

来自分类Dev

节点异步系列故障

来自分类Dev

节点异步与同步

来自分类Dev

节点/ MySQL的异步DATAS

来自分类Dev

优化异步查询节点

来自分类Dev

节点异步控制流

来自分类Dev

节点异步与同步

来自分类Dev

需要节点异步说明

来自分类Dev

异步等待节点js

来自分类Dev

使用异步的节点 bcrypt

来自分类Dev

如何修复forEach推送异步?

来自分类Dev

异步循环不尊重异步

来自分类Dev

python中异步循环内的异步循环

来自分类Dev

异步和等待与循环

来自分类Dev

的摘要循环异步吗?

来自分类Dev

异步回调循环