如何串行执行Promise?

在JavaScript中,Promise 是用于处理异步操作的对象,通常我们更习惯于并行执行 Promise,因为它们的设计初衷就是为了处理并发的异步操作。然而,有时候我们可能需要按照特定的顺序串行执行一系列的 Promise。这通常可以通过将 Promise 链接在一起,使每个 Promise 都在前一个 Promise 完成之后开始执行来实现。

以下是一个示例,展示了如何串行执行 Promise:

function promise1() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('Promise 1 完成');
            resolve('Promise 1 的结果');
        }, 1000);
    });
}

function promise2(data) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('Promise 2 完成,接收到的数据:', data);
            resolve('Promise 2 的结果');
        }, 1000);
    });
}

function promise3(data) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('Promise 3 完成,接收到的数据:', data);
            resolve('Promise 3 的结果');
        }, 1000);
    });
}

// 串行执行 Promise
promise1()
    .then(result1 => {
        return promise2(result1);
    })
    .then(result2 => {
        return promise3(result2);
    })
    .then(result3 => {
        console.log('所有 Promise 都已完成,最后的结果:', result3);
    })
    .catch(error => {
        console.error('在执行 Promise 时发生错误:', error);
    });

在这个示例中,我们定义了三个函数(promise1promise2promise3),每个函数都返回一个 Promise。这些 Promise 在完成时会打印一条消息,并传递一个结果给下一个 Promise。我们通过使用 .then() 方法将这些 Promise 链接在一起,从而实现了串行执行。注意,在每个 .then() 回调中,我们都返回了下一个 Promise,这样可以确保下一个 Promise 只有在当前 Promise 完成之后才会开始执行。最后,我们还添加了一个 .catch() 方法来处理任何可能在执行 Promise 时发生的错误。

posted @   王铁柱6  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示