我正在尝试使用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,我觉得在尝试返回数据时我缺少一个关键的异步概念。
答案 0 :(得分:3)
你可以这样做:
function reverse(str) {
let reversed = ''
for (let char of str) {
reversed = char + reversed
}
return reversed
}
console.log(reverse('hello world'))
但是,此函数仍会返回一个promise,因此您无法同步访问调用者中的结果。
您需要修改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]
}
});
}
方法,如下所示
getAll