我有两个返回Promise的函数.第一个返回要迭代的值的列表,并对每个值进行第二次调用,累积到结果以发送回去.
function firstCall() {
return new Promise(returns list of items);
}
function secondCall(someVal) {
return new Promise(return single value);
}
function doSomething() {
firstCall().then((response1) => {
response1.someResult.map((item) => {
secondCall(item).then((response2) => {
//how to collect all?
});
});
});
}
关于如何链接这些Promise返回调用和最终结果列表的任何建议?
解决方法:
我假设您正在使用ES6或某些polyfill(Bluebird等).如果不是这种情况,请更新您的问题.如果是这样,您可以向Promise.all()发送一个Promises数组,并返回一个答案数组.
function firstCall() {
return new Promise((resolve, reject) => {
resolve([1, 2, 3, 4, 5, 6]);
})
}
function secondCall(n) {
return new Promise((resolve, reject) => {
resolve(n * n);
})
}
function doSomething() {
firstCall()
.then(response1 => {
console.log(response1);
let promises = response1.map(r => secondCall(r));
Promise.all(promises)
.then(response2 => {
console.log(response2);
})
})
}
doSomething();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。