Promise.race 没有同时执行这两个函数[重复]

问题描述 投票:0回答:1

嗨,在这个代码块中,我的要求是执行函数 test(),如果它花费的时间超过 1 分钟,它应该停止执行(它正在经历无限循环并导致页面崩溃)。

我使用 Promise 和 Timer 来解决这个问题,但这里我面临的问题是超时函数甚至在执行executeWithRace 之前就被调用,并且它没有按预期工作,如何重构此代码?

async function executeWithRace() {
    const response = await Promise.race([timeoutPromise, testPromise]);
    console.log(response)
}


    const timeoutPromise = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('Timed Out');
        }, 60000); // 1 minute timeout
    });
 



  
    const testPromise = new Promise((resolve, reject) => {
        
            test(); // Execute the original test function
            resolve("testSuccessfull"); // Resolve if test function completes without error
      
    });

谢谢

我还尝试为这两个promise创建函数并将这些函数传递给promise.race(),但在这里我遇到了这种情况:只有promise.race()中第一个提到的函数被执行,而这两个函数都没有被执行t 同时执行。

javascript async-await promise settimeout es6-promise
1个回答
1
投票

JS 是单线程的,所以你的“无限循环”功能会完全阻止其他一切。您无法使用 async 或 setTimeout 解决这个问题(它们也被阻止)。对于这样的场景,您可以尝试使用worker和worker.terminate()。

© www.soinside.com 2019 - 2024. All rights reserved.