题目描述需要像同步执行那样,按照理想的顺序打印题目来源及自己的思路这是一个实际需求简化后的问题相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)for (let i = 0; i < 10; i ++) {
setTimeout(() => { console.log(`这是外层${i}`);
}, 1000); for (let j = 0; j < 5; j ++) {
setTimeout(() => { console.log(`这是内层的${j}`);
}, 1000);
}
}你期待的结果是什么?实际看到的错误信息又是什么?希望可以像同步一样,打印出以下结果,并且每次间隔1秒这是外层0这是内层的0这是内层的1这是内层的2这是内层的3这是内层的4这是外层1这是内层的0这是内层的1这是内层的2这是内层的3这是内层的4
1 回答

慕神8447489
TA贡献1780条经验 获得超1个赞
如果只是间隔1秒,那么这么做就行
let time = 0;for (let i = 0; i < 10; i++) { time += 1000 setTimeout(() => { console.log(`这是外层${i}`); }, time); for (let j = 0; j < 5; j++) { time += 1000; setTimeout(() => { console.log(`这是内层的${j}`); }, time); } }
然而这没有解决同步的问题,代码并不是等上一个执行完了才执行的.你需要的可能是async/await
async function print(msg) { return new Promise((resolve, reject) => { setTimeout(resolve, 1000, msg) }) }async function main() { for (let i = 0; i < 10; i++) { console.log(await print("外部" + i)); for (let j = 0; j < 5; j++) { console.log(await print("内部" + j)) } } } main()
这样其实可以,这个Promise+await有点绕,熟悉了才能灵活点运用
添加回答
举报
0/150
提交
取消