【发布时间】:2017-08-02 04:16:25
【问题描述】:
我使用request-promise节点模块如下:
let rp = require('request-promise');
我有以下承诺链:
getData().then( data => {
return getUser(data);
})
.then( data => {
return getProfiles(data);
}).then( data => {
updateAddresses(data);
});
updateAddresses 如下:
function updateAddresses(data){
var promises = data.map( (aProfile) => {
var options = {url:'http://example.com', method:'POST'};
return rp(options);
});
// Promise.all(promises).then(...);
}
所以我正在为数组的每个元素准备一个承诺(request-promise)。
问题是即使我删除了Promise.all,这些承诺也会触发!
这怎么可能?我怎样才能保证不触发?
问候。
【问题讨论】:
-
returnPromise.all()inupdateAddresses。 -
我不确定我是否很好地解释了这个问题:在我使用
Promise.all之前,我想按原样检查代码。我注意到承诺正在得到解决。我只想将它们存储在 promises 数组中。 -
然后存储选项,在你准备好之前不要调用
rp。你仍然需要从updateAddresses返回一些东西,否则你的map()将在作用域结束时丢失。 -
您能否发布一些关于如何存储选项并在他们的承诺上应用 Promise.all 的代码 sn-p ?
-
当然有。
Promise.all只是一个等待多个承诺的辅助函数。 Promise 是结果值,而不是要执行的操作。当您调用rp时会触发请求 - 而不是在您调用then时触发。
标签: node.js promise request request-promise