javascript - 为什么以下代码不返回所有数组元素的总和?

标签 javascript arrays promise javascript-objects es6-promise

下面是代码,我想返回所有数组元素的总和,为什么它不起作用。我知道我们不需要 Promise 来实现这一目标,但我想知道如何使用 Promise 来实现这一点。

const arr = [1, 5, 7, 8]; 
    function sumPromise(a, b) {
  return new Promise((res) => {
    setTimeout(() => {
      res(a + b);
    }, 1000);
  });
}
let res = arr.reduce(sumPromise);
res.then((a) => console.log(a));

输出:[对象 promise ]8

最佳答案

希望这会有所帮助

const arr = [1, 5, 7, 8];

function sumPromise(a, b) {
  return new Promise((res) => {
    setTimeout(() => {
      a.then(item => res(item + b))
    }, 1000);
  });
}

let res = arr.reduce(sumPromise, Promise.resolve(0));
res.then((a) => console.log(a));

不改变 sumPromise

const arr = [1, 5, 7, 8];

function sumPromise(a, b) {
  return new Promise((res) => {
    setTimeout(() => {
      res(a + b);
    }, 1000);
  });
}

let res = arr.reduce(
  (a, b) => a.then(item => sumPromise(item, b)),
  Promise.resolve(0)
);
res.then(console.log);

关于javascript - 为什么以下代码不返回所有数组元素的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72963501/

相关文章:

javascript - react native : can't a method be used from 'routeMapper' ?

javascript - Telerik 圆环图 - 自定义标签

Javascript JSON日期转换为java

javascript - 检测宽度 : auto in jQuery

c - 如何将第一个数组的值复制到另一个数组?

javascript - 我有一个数组,我想将其更改为包含最后一个子元素的新数组

c++ - 如何使用初始化列表构造 std::array 对象?

javascript - async.js waterfall 中未处理的 promise 拒绝警告

javascript - Angular 4 中 Promise 的实现错误

javascript - Promise.all()vs等待