vue如何递归判断请求接口响应数据之后一秒在做判断?

不能用setInterval来做, 还有别的方法吗

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);
阅读 3.4k
2 个回答

这样试试

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)=>{
        // setTimeout可以替换成你的请求,成功后调用resolve
        setTimeout(()=>{
          resolve()
        }, 1000)
      })
}
await payState()
console.log('1s后我才会打印')
推荐问题