Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态地使用for循环,将具有不同参数的函数推送到一个数组中?_Javascript_Arrays_Node.js_Parallel Processing_Async.js - Fatal编程技术网

Javascript 如何动态地使用for循环,将具有不同参数的函数推送到一个数组中?

Javascript 如何动态地使用for循环,将具有不同参数的函数推送到一个数组中?,javascript,arrays,node.js,parallel-processing,async.js,Javascript,Arrays,Node.js,Parallel Processing,Async.js,目前,我正在尝试使用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 resul

目前,我正在尝试使用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
}
var async=require(“async”);
var数组=[];
var x=[1,2,3,4];
//这部分代码工作完美,参数传递完美
//我得到的结果是:[100200300400]
push(函数(回调){callback(null,calculate(x[0]))});
push(函数(回调){callback(null,calculate(x[1]))});
push(函数(回调){callback(null,calculate(x[2]))});
push(函数(回调){callback(null,calculate(x[3]))});
//这部分代码不起作用,我不知道为什么。。。
//我得到的结果是:[400400400400]
//很明显,每次调用该函数时,都会收到相同的参数a=4

对于(i=0;i试试这个,这是一个闭包问题

for (i=0;i<3;i++){
   (function(i){
    array.push(function(callback){ callback(null,calculate(x[i]))});
   })(i)
}
(i=0;i是您所需要的

'use strict';
for (let i=0;i<3;i++){
    array.push(function(callback){ callback(null,calculate(x[i]))});
}
“严格使用”;

对于(let i=0;显然,我没有使用let as,我不知道他/她是否在使用transpiler,但是是的,“let”也是一个很好的途径!