Nodejs 串行怎么写好了些呢?

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

Nodejs 串行怎么写好了些呢?
做下载的,我需要一个一个任务下载,不要并行。我调用的是 exe 去下载,是不是要用 child_proess

6 回复

const dl = require(‘dl-vampire’)
for(){
await dl({ url, file })
}

要看你怎么调用 exe,本来就是阻塞调用普通的 for 循环就是了。

我看了一下,好像只有 for 支持异步的循环

在Node.js中,处理串行任务(即一个接一个地执行任务)可以通过多种方式实现,最常用的是使用async/await语法,它可以使异步代码看起来更像是同步代码,从而提高可读性和可维护性。

以下是一个简单的示例,展示如何使用async/await来实现串行任务:

// 假设我们有几个异步函数
function task1() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('Task 1 completed');
            resolve();
        }, 1000);
    });
}

function task2() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('Task 2 completed');
            resolve();
        }, 1000);
    });
}

function task3() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('Task 3 completed');
            resolve();
        }, 1000);
    });
}

// 使用 async/await 串行执行任务
async function runTasks() {
    await task1();
    await task2();
    await task3();
}

runTasks();

在这个例子中,task1task2task3是三个模拟的异步任务,每个任务都延迟1秒后完成。通过async/await,我们确保了这些任务是按顺序执行的。runTasks函数会等待task1完成后,再执行task2,最后执行task3

这种方式不仅简洁明了,还能有效避免“回调地狱”的问题,是处理Node.js中串行任务的首选方法。

回到顶部