Javascript 在回调方法中传递动态值

Javascript 在回调方法中传递动态值,javascript,node.js,Javascript,Node.js,在js、jquery或nodejs中,是否有一种方法可以将动态值传递给回调函数 for(var i = 0; i < 10; i++) { filename = 'file'+i+'.html'; request(url, function(error, response, body) { test(error, response, body, filename); }); } function test(error, response, body, filenam

在js、jquery或nodejs中,是否有一种方法可以将动态值传递给回调函数

for(var i = 0; i < 10; i++)
{
  filename = 'file'+i+'.html';
  request(url, function(error, response, body) {
   test(error, response, body, filename);
  });
}

  function test(error, response, body, filename) {
   console.log('file name ' + filename);
   if(response.statusCode == 200){
    console.log('done');
   }
for(变量i=0;i<10;i++)
{
文件名='file'+i+'.html';
请求(url、函数(错误、响应、正文){
测试(错误、响应、正文、文件名);
});
}
功能测试(错误、响应、正文、文件名){
log('文件名'+文件名);
如果(response.statusCode==200){
console.log('done');
}
我参考了这篇so文章,将值传递给回调函数

link:[JavaScript:将参数传递给回调函数

输出似乎总是9


如何动态传递值?回调函数始终引用filename的最后一个值。

在您的示例中,您在每次迭代中更改相同变量
filename
的值

因此,您应该以某种方式将
filename
的值绑定到
request
回调的上下文

例如,您可以在Anomous函数内部调用
request

function test (error, response, body, filename) {
  console.log('file name ' + filename);
  if (response.statusCode == 200) console.log('done');
}

for (var i = 0; i < 10; i++) {
  (function (filename) {
    request(url, function(error, response, body) {
      test(error, response, body, filename);
    });
  })('file'+i+'.html')
}

这是因为您的“请求”调用是异步的。请使用回调逻辑来解决此问题。@anand4tech如何实现这一点。您能举一些例子吗。
function test (filename) {
  return function (error, response, body) {
    console.log('file name ' + filename);
    if (response.statusCode == 200) console.log('done');
  };
}

for (var i = 0; i < 10; i++) {
  request(url, test('file'+i+'.html'));
}