【发布时间】:2018-07-19 15:48:26
【问题描述】:
我可以像这样一个接一个地执行异步函数:
function asyncFn(e, cb) {
return new Promise((res, rej) => {
setTimeout(() => {
console.log(e);
res();
}, 1000);
});
}
var arr = [1,2,3,4,5];
arr.reduce(
(chain, e) => chain.then(()=>asyncFn(e)),
Promise.resolve()
);
是否可以使用回调而不是解决承诺来做同样的事情?
【问题讨论】:
-
不,不是。它是 async/promise 部分,它允许立即从 asyncFn 返回并继续执行。如果您取出此代码的 Promise/Async 部分,则它需要等待对 asyncFn 的每次调用完成,然后才能继续执行。如果那不能为您解释,请告诉我,我会尝试更好地解释它。 ** 你可以用 setTimeout 来做,但维护起来会很麻烦。
-
setTimeout 是异步函数的一个例子,如果这就是你所说的
-
解决 promise 的缺点是什么?
-
真的没有缺点,只是想看看可能更难的答案
-
reduce 并不是真正适合这项工作的工具。与没有承诺的事情相比,这将是一个相当糟糕的比较。
标签: javascript node.js asynchronous es6-promise