4 回答
TA贡献1880条经验 获得超4个赞
你可能需要了解一下数组迭代器。。。
上面说的有点偏题,其实楼主的问题,上面已经给了答案,只不过答案来的太直接,楼主其实想串行执行一个与数组元素对应的方法,那就是个异步队列,那这个的话,promise是最佳人选啊。
TA贡献1845条经验 获得超8个赞
function traverse (arr) {
let i = 0
let len = arr.length
return function recursion (d) {
if (i >= len) return Promise.resolve(d) // 最后一次请求的结果
let data = arr[i++]
// let params = { // data是循环的数据,d是上次请求返回的数据
// data,
// d
// }
return new Promise((resolve, reject) => { // promise替换成你的异步请求
setTimeout(() => {
resolve(data + d)
}, 1000)
}).then(d => { // 处理请求后的数据
console.log(d)
recursion(d) // 把请求后的数据传给下一次调用
})
}
}
var arr = [1, 2, 3, 4]
var fun = traverse(arr)
fun(0).then(console) // 打印最后一次请求的结果
TA贡献1859条经验 获得超6个赞
async function foo() {
const time1 = 100;
const time2 = await step1(time1);
const time3 = await step2(time2);
}
step里return Promise对象
添加回答
举报