const queryStatus = async () => { let seconds = 10 intervalId = setInterval(function () { if (seconds === 0) { clearInterval(intervalId); } else { // 调用查询订单状态的接口,并更新状态 let payService = queryOrderStatus() console.log(payService,"payService"); 打印的是Promise {<pending>}__proto__: Promise[[PromiseState]]: "fulfilled"[[PromiseResult]]: 2如何解决 seconds-- setSeconds(seconds) } }, 1000); } const queryOrderStatus = async () => { const ref = await payService.getGoodsdeails({ orderSn: nameId }) return ref.data.data[0].payStatus }
时间: 2023-12-17 11:02:01 浏览: 28
这段代码中,`queryStatus`函数中调用了`queryOrderStatus`函数,而`queryOrderStatus`函数返回的是一个Promise对象。因此,在`console.log(payService,"payService")`打印出来的是一个Promise对象,其状态为pending。这是因为`queryOrderStatus`函数中的异步操作还没有完成。如果想要获取到异步操作的结果,需要使用`await`关键字或者`then`方法,例如:
```
const queryStatus = async () => {
let seconds = 10
intervalId = setInterval(async function () { //注意这里加上async关键字
if (seconds === 0) {
clearInterval(intervalId);
} else {
// 调用查询订单状态的接口,并更新状态
let payStatus = await queryOrderStatus(); //使用await关键字获取异步操作的结果并赋值给payStatus变量
console.log(payStatus, "payStatus"); //打印payStatus变量
seconds--
setSeconds(seconds)
}
}, 1000);
}
const queryOrderStatus = async () => {
const ref = await payService.getGoodsdeails({ orderSn: nameId })
return ref.data.data[0].payStatus
}
```
或者使用`then`方法:
```
const queryStatus = async () => {
let seconds = 10
intervalId = setInterval(function () {
if (seconds === 0) {
clearInterval(intervalId);
} else {
// 调用查询订单状态的接口,并更新状态
queryOrderStatus().then(payStatus => { //使用then方法获取异步操作的结果并执行回调函数
console.log(payStatus, "payStatus"); //打印payStatus变量
})
seconds--
setSeconds(seconds)
}
}, 1000);
}
const queryOrderStatus = async () => {
const ref = await payService.getGoodsdeails({ orderSn: nameId })
return ref.data.data[0].payStatus
}
```