我正在尝试使用 promise.all()
function apiReq1(apiCred){
const rds = new apiCred.RDS();
var request = rds.describeDBInstances();
return request.promise();
}
function getAPIs (apiCred) {
return Promise.all([apiReq1(apiCred), apiReq2(apiCred), apiReq3(apiCred)]).then(function(data) {
console.log(data[0])
console.log(data[1])
console.log(data[2])
return data
// ideal return
//myMap.set('bar', data[0])
//.set('foo', data[1])
//.set('baz', data[2]);
//return myMap
});
}
// Function that is calling getAPIs
function getAll() {
apiCred = getApiCred()
page = getAPIs(apiCred)
console.log(page)
}
console.log 按预期打印出数据,但是我希望能够返回 data
对象,或者理想情况下返回一个包含所有三个可迭代对象的新对象,无论调用 getAPIs()
。这是我第一次尝试使用 promises,我觉得我在尝试返回数据时缺少一个关键的异步概念。
最佳答案
你可以这样做:
function getAPIs (apiCred) {
return Promise.all([apiReq1(apiCred), apiReq2(apiCred), apiReq3(apiCred)]).then(function(data) {
return {
'bar': data[0],
'foo': data[1],
'baz': data[2]
}
});
}
但是,这个函数仍然返回一个 promise ,所以你不能在调用者中同步访问结果。
你需要修改你的getAll
方法如下
function getAll() {
apiCred = getApiCred()
return getAPIs(apiCred).then(page => {
console.log(page);
//DO YOUR THING
})
}
关于javascript - 从 promise.all() 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47854696/