node.js 有一个批量异步处理,在 bluebird settle 执行完还需要使用 id 咋办,请问如何获取?
var queries = array.map(function(id){
return User.schema.find({user_id: id}).execAsync();
});
return Promise.settle(queries).then(function(results){
results.forEach(function(result){
if(result.isFulfilled()){
//这里如何使用 map 遍历时的 id ?
}else if(result.isRejected()){
error(result.reason());
}
});
});
settle 是异步执行在外面定义一个变量临时存储 id 好像不行吧,如果是闭包倒是可以在每个异步执行完获取 id ,因为在同一个 function 作用域。
1
zhuangzhuang1988 2016-04-05 11:15:43 +08:00 1
var queries = array.map(function(id){
return User.schema.find({user_id: id}).execAsync(); }); ==> var queries = array.map(function(id){ return User.schema.find({user_id: id}).execAsync().then(data => { return {id: id, data: data} }); }); 这样就好了... |
2
photon006 OP @zhuangzhuang1988 Got it , thanks 。
|