Promise.map 中的异步方法
Async method inside Promise.map
我需要帮助来理解如何在 .map 方法中调用异步方法。我需要等到所有异步方法完成,然后使用异步方法修改的值。
我的代码如下
//declared during init
var Promise = require("bluebird");
Promise.map(objectArray, function (item) {
mongoDB.findOne({
itemId=item.id
})
.then(function (result) {
item.set({newValue:result.foo});
return item.toObject();
})
.catch(function (err) {
});
}).then(function (modifiedObjectArray) {
return res.status(200).send(modifiedObjectArray);
});
在上述情况下,一旦迭代器完成其任务,就会调用 map 的 then 函数。如何等到所有数据库任务完成。
你应该return你的回调承诺:
Promise.map(objectArray, function (item) {
return mongoDB
.findOne({itemId: item.id})
.then(function (result) {
item.set({newValue: result.foo});
return item.toObject();
})
.catch(function (err) {
});
}).then(function (modifiedObjectArray) {
return res.status(200).send(modifiedObjectArray);
});
我需要帮助来理解如何在 .map 方法中调用异步方法。我需要等到所有异步方法完成,然后使用异步方法修改的值。
我的代码如下
//declared during init
var Promise = require("bluebird");
Promise.map(objectArray, function (item) {
mongoDB.findOne({
itemId=item.id
})
.then(function (result) {
item.set({newValue:result.foo});
return item.toObject();
})
.catch(function (err) {
});
}).then(function (modifiedObjectArray) {
return res.status(200).send(modifiedObjectArray);
});
在上述情况下,一旦迭代器完成其任务,就会调用 map 的 then 函数。如何等到所有数据库任务完成。
你应该return你的回调承诺:
Promise.map(objectArray, function (item) {
return mongoDB
.findOne({itemId: item.id})
.then(function (result) {
item.set({newValue: result.foo});
return item.toObject();
})
.catch(function (err) {
});
}).then(function (modifiedObjectArray) {
return res.status(200).send(modifiedObjectArray);
});