Node.js 实现多个请求按顺序执行

2025-01-10 19:29:54   小编

在Node.js开发中,很多场景下我们需要让多个请求按顺序依次执行,以确保数据的准确性和逻辑的连贯性。本文将探讨如何在Node.js里实现多个请求按顺序执行。

使用回调函数来处理顺序执行是一种较为基础的方法。我们可以将每个请求封装成一个函数,在第一个请求的回调函数中触发第二个请求,以此类推。例如:

function request1(callback) {
    setTimeout(() => {
        console.log('请求1完成');
        callback();
    }, 1000);
}

function request2(callback) {
    setTimeout(() => {
        console.log('请求2完成');
        callback();
    }, 1000);
}

function request3() {
    setTimeout(() => {
        console.log('请求3完成');
    }, 1000);
}

request1(() => {
    request2(() => {
        request3();
    });
});

不过,这种回调地狱的方式在请求数量增多时,代码的可读性和维护性会急剧下降。

Promise则是更好的解决方案。Promise有三种状态:pending、fulfilled和rejected,通过链式调用可以轻松实现顺序执行。我们把每个请求封装成返回Promise的函数,然后使用.then()方法依次处理。

function request1() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('请求1完成');
            resolve();
        }, 1000);
    });
}

function request2() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('请求2完成');
            resolve();
        }, 1000);
    });
}

function request3() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('请求3完成');
            resolve();
        }, 1000);
    });
}

request1()
  .then(() => request2())
  .then(() => request3());

async/await语法基于Promise,让代码看起来更像同步代码。async函数总是返回一个Promise,await只能在async函数内部使用,它会暂停函数执行,直到Promise被解决。

async function runRequests() {
    await request1();
    await request2();
    await request3();
}

runRequests();

通过以上方法,我们能够在Node.js里优雅地实现多个请求按顺序执行,提升代码的质量和可维护性,无论是简单的应用还是复杂的项目,都能更好地满足业务需求。

TAGS: Node.js 顺序执行 请求控制 多个请求

欢迎使用万千站长工具!

Welcome to www.zzTool.com