gpt4 book ai didi

javascript - Promise.race 函数比较超时

转载 作者:行者123 更新时间:2023-11-29 20:34:00 27 4
gpt4 key购买 nike

我有一段代码(一个测试运行器)应该运行代码并返回结果,我想为每个测试用例设置一个时间限制所以我使用 Promise.race 但不幸的是它不起作用

const createTestCafe = require('testcafe');
let testcafe = null;

createTestCafe('localhost', 1337, 1338)
.then(tc => {
testcafe = tc;
const runner = testcafe.createRunner();


const runPromise = runner
.src(['/test.js'])
.browsers(['chrome'])
.run({skipJsErrors:true});

const deadlinePromise = new Promise(resolve => setTimeout(resolve, 5000))
.then(new Error('request timeout'))

return Promise.race([runPromise, deadlinePromise])
})

.catch(failedCount => {
console.log('Tests failed: ' + failedCount);
testcafe.close();
});

runPromise 是我的测试用例,它总是返回 10 秒或 11 秒,deadlinePromise 我设置了 5 秒,它总是运行我的测试用例并返回秒数,但我想要实现的是测试用例失败,因为它花费的时间超过 5 秒,我该怎么做??

最佳答案

我假设您代码中的所有其他内容都按预期工作。但是,我发现有两个主要问题导致此代码无法正常工作

  1. .then(new Error('request timeout')):正如@charlietfl 所说,您需要一个函数参数。 then 需要这个,但你没有给它一个。
  2. Promise.race([runPromise, deadlinePromise]) 返回一个 promise ,而不是已解决的 promise 。我在你的函数中添加了 async 标志,这样你就可以 await 它了(否则你需要另一个 .then( ... ) 等...)

更新代码

const createTestCafe = require('testcafe');
let testcafe = null;

createTestCafe('localhost', 1337, 1338)
.then(async (tc) => { // Added async so you can use await
testcafe = tc;
const runner = testcafe.createRunner();
const runPromise = runner
.src(['/test.js'])
.browsers(['chrome'])
.run({skipJsErrors:true});

const deadlinePromise = new Promise(resolve => setTimeout(resolve, 5000))
.then( d => new Error('request timeout')); // First Issue: `.then` requires a function argument.

return await Promise.race([runPromise, deadlinePromise]) // Second Issue: You need to actually run this
})

.catch(failedCount => {
console.log('Tests failed: ' + failedCount);
testcafe.close();
});

关于javascript - Promise.race 函数比较超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57260910/

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