gpt4 book ai didi

javascript - 如何动态使用 for 循环,将具有不同参数的函数推送到数组?

转载 作者:行者123 更新时间:2023-11-30 16:09:30 25 4
gpt4 key购买 nike

目前我正在尝试使用 Node.JS 并行运行具有不同参数的相同函数

为此,我使用 Async.js,我正在努力尝试将函数推送/堆叠到数组。问题是函数是用相同的参数执行的。这是我的:

var async = require("async");
var array = [];
var x = [1,2,3,4];

// This portion of code works perfect and the arguments are passed perfectly
// The results that i am getting are: [100, 200, 300, 400]
array.push(function(callback){ callback(null,calculate(x[0]))});
array.push(function(callback){ callback(null,calculate(x[1]))});
array.push(function(callback){ callback(null,calculate(x[2]))});
array.push(function(callback){ callback(null,calculate(x[3]))});

// This portion of code does not work and I dont know why ...
// The results that i am getting are: [400, 400, 400, 400]
// Obviusly the function is receiving the same argument a=4 everytime is called
for (i=0;i<3;i++){
array.push(function(callback){ callback(null,calculate(x[i]))});
}

async.parallel(array,function(err,result){
if (err) {
console.log(err);
return;
}
console.log("Results are: " + result);
});


function calculate(a) {
return a*100
}

知道哪里出了问题吗?谢谢

最佳答案

试试这个,是闭包的问题

for (i=0;i<3;i++){
(function(i){
array.push(function(callback){ callback(null,calculate(x[i]))});
})(i)
}

关于javascript - 如何动态使用 for 循环,将具有不同参数的函数推送到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com