gpt4 book ai didi

JavaScript 链式 Promises 意外的解析顺序

转载 作者:行者123 更新时间:2023-11-28 12:59:27 24 4
gpt4 key购买 nike

我对这两个不同函数的执行感到困惑,我希望它们以相同的顺序解析,但显然,它们没有。

    // given this function:
let promiseDelay = () => new Promise( resolve => { setTimeout( () => { console.log( '========' ); resolve(); }, 1000 ) } );

// execution 1:
const promise1 = Promise.resolve( {} ).then( promiseDelay ).then( () => console.log( 'Job done!' ) ).then( promiseDelay ).then( () => console.log( 'Job done!' ) );

// given this function:
const promiseDelay = () => new Promise( resolve => { setTimeout( () => { console.log( '========' ); resolve(); }, 1000 ) } );

// execution 2:
const promise = Promise.resolve( {} );
promise.then( promiseDelay );
promise.then( () => console.log( 'Job done!' ) );
promise.then( promiseDelay );
promise.then( () => console.log( 'Job done!' ) );

最佳答案

您实际上并没有在这里链接 Promise,您只是将多个函数附加到 Promise,所有函数都同时执行。

要链式 Promise,请依次编写下一个 .then():

// given this function:
promiseDelay = () => new Promise( resolve => { setTimeout( () => { console.log( '========' ); resolve(); }, 1000 ) } );

// execution 1:
promise = Promise.resolve( {} ).then( promiseDelay ).then( () => console.log( 'Job done!' ) ).then( promiseDelay ).then( () => console.log( 'Job done!' ) );

// execution 2:
promise = Promise.resolve( {} );
promise.then( promiseDelay )
.then( () => console.log( 'Job done!' ) )
.then( promiseDelay )
.then( () => console.log( 'Job done!' ) );

关于JavaScript 链式 Promises 意外的解析顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52190120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com