Последовательные вызовы функций - PullRequest
1 голос
/ 04 августа 2020

У меня есть массив асинхронных функций, его нужно вызывать по порядку, а результат вызова предыдущей функции передается в аргументы. Как это можно сделать примерно?

Ответы [ 2 ]

1 голос
/ 04 августа 2020
// lets say we have a function that takes a value and adds 20 to it asynchronously
const asyncPlus20 = num => Promise.resolve(num+a)
const arr = [asyncPlus20, asyncPlus20]

let res = 0 // some starting value
for (const f of arr) res = await f(res)
// res is now 20
0 голосов
/ 05 августа 2020

Один из лучших способов для Array of Asyn c функций - использовать For ... of .

Запустите приведенный ниже фрагмент в консоли. >> Также включает передачу аргументов

const twoSecondsPromise = () => {
    return new Promise((resolve) => {
        setTimeout(() => resolve('2000_'), 2000);
    })
};

const threeSecondsPromise = (val) => {
    return new Promise((resolve) => {
        setTimeout(() => resolve(val + '3000_'), 3000);
    })
};

const fiveSecondsPromise = (val) => {
    return new Promise((resolve) => {
        setTimeout(() => resolve(val + '5000_'), 5000);
    })
};

(async function () {
    const asyncFunctions = [twoSecondsPromise, threeSecondsPromise, fiveSecondsPromise];
    let result;
    for (const file of asyncFunctions) {
        result = await file(result);
        console.log(result);
     }
})();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...