多个异步任务串行执行

64 阅读1分钟

1.创建异步任务数组,元素为返回Promise对象的方法

const tasks = files.map((file, index) => {
    return () => new Promise((resolve, reject) => {
        setTimeout() => {
            resolve({});
        })
    })
})

2.串行执行异步任务

async function runAsyncTasks(tasks) {
    const results = [];
    for (const task of tasks) {
        const result = await task();
        results.push(result);
    }
    return results;
}

tip:for of是ES6迭代器语法糖

3.执行异步任务

runAsyncTasks(tasks).then(results => {
    callback(results);
});