ivo*_*oba 4 javascript asynchronous node.js
我必须将一组函数传递给node.js 的async.js模块.
从文档的正常方式是:
async.parallel([
function(callback){
setTimeout(function(){
callback(null, 'one');
}, 200);
},
function(callback){
setTimeout(function(){
callback(null, 'two');
}, 100);
},
],
// optional callback
function(err, results){
});
Run Code Online (Sandbox Code Playgroud)
我这样试过:
for(var i = 0; i < jsonData.length; i++)
{
...
o.url = serviceurl;
o.title = jsonData[i];
var ff = function(callback){
obj.loadService(o.title,o.url,callback);
}
callItems.push(ff(function(){return true;}));
}
async.parallel(
callItems,
// optional callback
function(err, results){
console.log('all calls called without any errors');
});
Run Code Online (Sandbox Code Playgroud)
贯穿但主要的回调没有被调用.
所以我不能说所有并行呼叫都已完成.
我在这里失踪了什么?
看起来封闭在for循环中不正确地形成.尝试使用外部函数返回当前分配给ff的值.例:
for(var i = 0; i < jsonData.length; i++)
{
...
o.url = serviceurl;
o.title = jsonData[i];
var ff = makeCallbackFunc(obj, o.title, o.url);
callItems.push(ff(function () {return true;}));
}
function makeCallbackFunc(obj, title, url) {
return function (callback) {
obj.loadService(title, url, callback);
};
}
Run Code Online (Sandbox Code Playgroud)
我对你添加到callitems的内容感到有点困惑 - 即使用函数参数调用ff的结果 - 它不会是回调函数,它会立即执行.
| 归档时间: |
|
| 查看次数: |
4896 次 |
| 最近记录: |