js中 for循环同步执行异步代码

635 阅读1分钟

forEach不支持async/await

                async function delay() {
			return new Promise((resolve, reject) => {
				setTimeout(() => {
					resolve('异步结果')
				})
			})
		}
		async function fn() {
			for (let i = 1; i < 2; i++) {
				let aa = await delay()
				console.log(aa);
			}
		};

		async function bb(val) {
			switch (val) {
				case 1:
					console.log('case1')
					await fn()
					break
				case 2:
					console.log('case2')
					break
			}

			console.log('-----bb结束');
		}

		async function aa() {
			for (let i = 1; i < 3; i++) {
				await bb(i)
			}
		}

		aa()

输出

image.png

每层调用的函数都需要使用async/await将代码改为同步