一个方法里有两个setTimeOut,如何让第一个getData 500毫秒以后获取到数据,再执行1000毫秒之后的逻辑。
我遇到的问题是接口返回数据的时间比较久,有时2秒左右才返回,setStyle()执行了里边没有数据,如何让getData获取数据了再1000毫秒后执行setStyle(),我像下边这样好像还是不行,是什么原因?
init() {
window.setInterval(this.startShow, 6000)
},
// 显示的动画
async startShow() {
this.curIndex =;
await this.getData()
window.setTimeout(() => {
this.setStyle()
}, 1000)
},
// 获取数据
async getMapData() {
await window.setTimeout( async () => {
this.resData = {}
let result = await Api.getData()
if(result.status == 200) {
this.resData = result.data
}
}, 500)
},
windows.setTimeout 返回的并不是一个 Promise,而是一个用于 clearTimeout 的定时器编号,这个返回是立即执行的,并不是等 setTimeout 里面的 function 执行了之后才会返回,因此你 getMapData 里这样 await 并没有效果,你可以让 getMapData 返回一个 Promise,在 function 执行了之后再 resolve 就可以达到你想要的效果了。