话说nodejs里有一个函数 setTimeout ,我们可以用它实现等几秒做一件事情的功能。
// 等3秒,念一句诗 setTimeout(() => {console.log(‘床前明月光‘)}, 3000);
念诗一时爽,不停念诗不停爽,就变成了这个样子。
setTimeout(() => { console.log(‘窗前明月光‘) setTimeout(()=>{ console.log(‘疑是地上霜‘) setTimeout(()=>{ console.log(‘举头望明月‘) setTimeout(()=>{ console.log(‘低头思故乡‘); }, 3000); }, 3000); }, 3000); }, 3000);
但是,层层回调很不爽,江湖人称callback hell。于是乎,有人发明了promise
function timeout(ms){ return new Promise((resolve) => { setTimeout(resolve, ms); }) } timeout(3000).then(()=> { console.log(‘窗前明月光‘); return timeout(3000); }).then(()=> { console.log(‘疑是地上霜‘); return timeout(3000); }).then(()=> { console.log(‘举头望明月‘); return timeout(3000); }).then(()=> { console.log(‘低头思故乡‘); });
但是人们还不满足,有没有办法不要用回调函数?于是有了async/await
function timeout(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }) } async function main() { await timeout(3000); console.log(‘窗前明月光‘); await timeout(3000); console.log(‘疑是地上霜‘); await timeout(3000); console.log(‘举头望明月‘); await timeout(3000); console.log(‘低头思故乡‘); } main();
javascript 从callback到promise到async/await
原文:https://www.cnblogs.com/chrlwang/p/13490301.html