在创建的函数中设置超时(setTimeOut)

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

我有一个下面的函数,我想设置一个超时。 如果该函数执行超过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);

你能帮我吗?

提前致谢!

javascript function automated-tests cypress settimeout
1个回答
0
投票

您可以在代码中使用这样的 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));
}
© www.soinside.com 2019 - 2024. All rights reserved.