promise 批量 settle 执行结果如何使用参数

2016-04-05 10:35:16 +08:00
 photon006

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 作用域。

3203 次点击
所在节点    Node.js
2 条回复
zhuangzhuang1988
2016-04-05 11:15:43 +08:00
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}
});
});
这样就好了...
photon006
2016-04-05 12:49:29 +08:00
@zhuangzhuang1988 Got it , thanks 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/268599

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX