PromisesInSeries
函数,该函数采用一组异步函数,并依次调用(下一个在上一个函数完成时开始),并将调用前一个函数的结果作为参数传递
function promisesInSeries(asyncFns) {
let result;
return new Promise((resolve, reject) => {
for(const fn of asyncFns){
resolve(fn)
.then(data => fn(data))
}
})
}
我只得到第一个函数的结果。如何从数组调用所有函数,并因此返回最后一个值?
答案 0 :(得分:0)
如果您可以使用async-await,这会更简单:
async function promisesInSeries(asyncFns) {
let result;
for (const fn of asyncFns) {
result = await fn(result);
}
}
答案 1 :(得分:0)
如果没有async
/ await
,则可以reduce
fns
数组:
function promisesInSeries(fns) {
return fns.reduce((promise, fn) => promise.then(fn), Promise.resolve());
}
第一个fn
将收到值undefined
,然后将每个返回值传递给下一个函数。
如果要具有一些初始值,可以通过将Promise.resolve()
更改为Promise.resolve(initialData)
来提供。 initialData
可以是静态值,也可以是通过函数参数传递的值。