得到一个需求,需要循环调用接口十次,并且每次调用时延迟1s,如果得到结果则结束循环。处理如下:
const getLoopResult = async (index, total, isGetRes) => {
await new Promise((resolve) => {
setTimeout(() => {
getFunctionResult({'b':b}).then(res => {
// 调用请求成功
if(res.code == 200) {
isGetRes = true
this.setData({
isMute: b,
isClickedXiaoyinBtn: false
})
wx.hideToast()
} else {
isGetRes = false
if(index === total - 1) {
// 第十次调用请求失败
wx.hideToast({
success: () => {
wx.showToast({
title: `设备${that.data.isMute == 1 ?'关闭':'打开'}失败,请稍候再试`,
icon: 'none'
})
},
})
that.setData({
isClickedXiaoyinBtn: false
})
}
}
resolve(isGetRes)
})
}, 1000)
})
if(index < total-1 && !isGetRes) {
getLoopResult(index+1, total, isGetRes)
}
}
// 最多调用getFunctionResult十次,并且每次延迟1s再调用接口
getLoopResult (0, 10, false)