我正在使用一个名为request-promise
的库来多次调用API,而不是像这样的承诺。
const rp = require('request-promise');
static buildProfileImageObject(personObj) {
var promiseArr = [];
var parsedPersonResponseObj = [];
personObj.searchResult.hits.map(person => {
let options = {
method: 'GET',
uri: `api.com/class/${person.ID}`,
json: true
}
promiseArr.push(rp(options));
});
var resultsObj = null
Promise.all(promiseArr)
.then((results) => {
resultsObj = results
console.log(results)
}).catch(err => {
Utils.log("API Call Error", err)
return Utils.errorResponse();
});
console.log("THIS IS AFTER");
console.log(resultsObj);
return resultsObj;
}
这会完美地调用API,并在console.log(results)
被点击时显示所有结果。
我的问题是,当调用此函数时,我得到null
的值,因为它不等待Promise.all
完成。返回显示null
如何等待Promises完成然后返回这些结果?
答案 0 :(得分:1)
你的函数还需要返回一个promise(或者如果你的堆栈支持它,那么就是async
函数,但我认为它不会。)
const rp = require('request-promise');
static buildProfileImageObject(personObj) {
const promises = personObj.searchResult.hits.map(person => rp({
method: 'GET',
uri: `api.com/class/${person.ID}`,
json: true
}));
return Promise.all(promises).catch(err => {
Utils.log("API Call Error", err)
return Utils.errorResponse();
});
}
然后你就像
一样使用它Something.buildProfileImageObject(person).then((results) => {
console.log(results);
});