微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Javascript链接诺言结果

我有两个返回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] 举报,一经查实,本站将立刻删除。

相关推荐