How does vue recursively judge the request interface response data for a second after making a decision?

can"t do it with setInterval. Is there any other way

const payState = setInterval(() => {
  _this.$api["payment/payState"]({
    PayNo: _this.orderNo,
  }).then((results) => {
    (results.Success === true)
      && clearInterval(payState)
      && (_this.paymentPopup = true);
  }).catch((err) => {
    console.error(err);
  });
  console.log("result", result);
}, 1000);
May.13,2022

try this

let payState  
_this.$api['payment/payState']({
    PayNo: _this.orderNo,
  }).then((results) => {
    payState = setTimeout(() => {
      if (true) {
        // do something
        clearTimeout(payState)
      }
    }, 1000)
  }).catch((err) => {
    console.error(err);
  });
  console.log('result', result);
}

const payState = () => {
    return new Promise((resolve, reject)=>{
        // setTimeoutresolve
        setTimeout(()=>{
          resolve()
        }, 1000)
      })
}
await payState()
console.log('1s')
Menu