async/awaitpromise 遍历
Posted fiy-noob
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了async/awaitpromise 遍历相关的知识,希望对你有一定的参考价值。
for 遍历语句
async function run() {
for (let i = 0; i < 2; i++) {
for (let j = 0; j < 2; j++) {
await new Promise(resolve => {
setTimeout(async () => {
await new Promise(resolve => {
setTimeout(() => {
console.log(1)
resolve()
}, 3000)
})
console.log(2)
resolve()
}, 2000)
})
}
}
console.log(3)
}
run()
console.log(0)
// 输出顺序
// 0
// 1
// 2
// 1
// 2
// 1
// 2
// 1
// 2
// 3
需要注意的是,async 的影响范围只在其作用函数方法内,所以先输出 ‘0’;再则根据 await 一层一层地往里面执行,resolve 不能改名,且必须要在执行完各项操作后返回,否则会中断其后所有操作!
forEach 方法遍历
async function run() {
let arr = []
let target = [1, 2]
target.forEach(i => {
arr.push(
new Promise(resolve => {
setTimeout(() => {
console.log(1)
resolve()
})
})
)
})
await Promise.all(arr).then(val => {
console.log(2)
})
console.log(3)
}
run()
console.log(0)
// result
// 0
// 1
// 1
// 2
// 3
以上是关于async/awaitpromise 遍历的主要内容,如果未能解决你的问题,请参考以下文章
关于async/awaitpromise和setTimeout执行顺序
遇到 Async/Await Promise 问题 - Javascript/Nodejs
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段