Javascript 在回调方法中传递动态值
在js、jquery或nodejs中,是否有一种方法可以将动态值传递给回调函数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
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'));
}