/**
* JavaScript虽然是单线程语言,结合Promise之后异步和同步的原理和其他语言一样(多线程)
* **/
async function deplayAsync (timeout) {
// 使用Promise把setTimeout异步转同步,达到延时的效果
let deplayFunc = ms => new Promise(resolve => setTimeout(resolve, ms));
// 【注:外部调用的时候必须使用await deplay(5000)格式才有效果】
console.log("延迟方法执行");
return await deplayFunc(timeout);
}
// 异步调用执行【同时执行,不会等待】
for (let i = 0; i < 3; i++) {
console.log(`执行第${i}次`);
// 异步调用
deplayAsync(5000);
}
(async function () {
// 同步调用执行【等待第一次延时完成,才会继续往下执行】
for (let i = 0; i < 3; i++) {
console.log(`执行第${i}次`);
// 异步调用
await deplayAsync(5000);
}
})();