const queryStatus = async () => { let seconds = 10 intervalId = setInterval(function () { if (seconds === 0) { clearInterval(intervalId); } else { // 调用查询订单状态的接口,并更新状态 let bb = queryOrderStatus() seconds-- setSeconds(seconds) } }, 1000); } const queryOrderStatus = async () => { await payService.getGoodsdeails({ orderSn: nameId }).then((ref) => { if (ref.data.data > 0) { return ref.data.data[0].payStatus } })代码优化
时间: 2023-12-17 07:02:01 浏览: 124
vue中使用input[type="file"]实现文件上传功能
5星 · 资源好评率100%
你可以将 `queryOrderStatus` 函数中的 `await` 去掉,并将其改为使用 `async/await` 的方式处理异步操作。同时,你可以将 `setSeconds(seconds)` 放到 `if-else` 判断中,避免在 `seconds === 0` 的时候还会执行一次更新状态的操作。优化后的代码如下:
```
const queryStatus = async () => {
let seconds = 10
const intervalId = setInterval(async () => {
if (seconds === 0) {
clearInterval(intervalId)
} else {
const payStatus = await queryOrderStatus()
if (payStatus > 0) {
clearInterval(intervalId)
} else {
seconds--
setSeconds(seconds)
}
}
}, 1000)
}
const queryOrderStatus = async () => {
const ref = await payService.getGoodsdeails({ orderSn: nameId })
return ref.data.data[0].payStatus
}
```
阅读全文