循环一个数组,
调用方法1,返回ture或false
如果true,调用接口a
如果false,调用接口b
获取当a和b全部返回的时候
调用a,b接口的时候,确保一个接口返回了,再调用下一个接口
<script>
var arr = [1, 2, 3, 4, 5]
var promiseData = []
goWork()
async function goWork() {
for (let i = 0; i < arr.length; i++) {
console.log('开始for循环:' + i)
let answer = aa(arr[i])
if (answer) {
await settimeout1(i).then((res) => { // 等一个个回来
console.log('调用settimeout1')
console.log(res)
promiseData.push(settimeout1())
})
}
else {
await settimeout2().then((res) => { // 等一个个回来
console.log('调用settimeout2')
console.log(res)
promiseData.push(settimeout2())
})
}
}
Promise.all(promiseData).then(data => { // 数据
console.log(data)
})
}
function aa(i) {
if (i % 2 != 0) { // 1,2,3
aAnswer = true
}
else { // 4,5
aAnswer = false
}
return aAnswer
}
function settimeout1(i) {
return new Promise((resolved, rej) => {
if (i == 0) {
setTimeout(() => {
resolved('我是第0条,大家久等了')
}, 1000)
} else {
resolved('settimeout1')
}
})
}
function settimeout2() {
return new Promise((resolved, rej) => {
resolved('settimeout2')
})
}
</script>