我有一个下面的函数,我想设置一个超时。 如果该函数执行超过2分钟,则超时并进入下一个测试流程。
有人知道如何在函数中添加 setTimeOut 吗?
功能:
function resWait() {
cy.req(
'GET',
`${url}/transaction/acquirertrxquery?acquirerId=1&dateFrom=${actualDate}%2000:00:00&dateTo=${actualDate}%2023:59:00&externalId=${idExternal}`
).then((res) => {
if (res.body.content[0].trxConfirmationStatus.description === 'Confirmed') {
return
}
cy.wait(3000)
resWait()
})
}
我尝试如下设置超时,但没有成功:
function resWait() {
cy.req(
'GET',
`${url}/transaction/acquirertrxquery?acquirerId=1&dateFrom=${actualDate}%2000:00:00&dateTo=${actualDate}%2023:59:00&externalId=${idExternal}`
).then((res) => {
if (res.body.content[0].trxConfirmationStatus.description === 'Confirmed') {
return
}
cy.wait(3000)
resWait()
})
}
setTimeout(resWait, 20000);
你能帮我吗?
提前致谢!
您可以在代码中使用这样的 Promise :
function resWait() {
cy.req(
'GET',
`${url}/transaction/acquirertrxquery?acquirerId=1&dateFrom=${actualDate}%2000:00:00&dateTo=${actualDate}%2023:59:00&externalId=${idExternal}`
).then((res) => {
if (res.body.content[0].trxConfirmationStatus.description === 'Confirmed') {
return
}
// After 3 sec again call function
await sleep(3000);
resWait(); // Call resWait function again
})
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}