JavaScript 异步笔记:回调、Promise 与 async/await
JavaScript 是单线程的,遇到网络请求、定时器等耗时操作,不能傻等,于是有了「异步」。理解异步,基本就是理解三件事的演进:回调、Promise、async/await。
回调:最原始的方式
把「做完之后要做什么」写成函数传进去:
setTimeout(function () {
console.log('两秒后执行');
}, 2000);
问题是多个异步嵌套会形成「回调地狱」,读起来费劲。
Promise:给异步一个承诺
Promise 把「将来才会返回的结果」封装成一个对象,用 then 串联:
fetch('/api/data')
.then(res => res.json())
.then(data => console.log(data));
async/await:写起来像同步
在 Promise 之上,async/await 让异步代码读起来和同步几乎一样:
async function load() {
const res = await fetch('/api/data');
const data = await res.json();
console.log(data);
}
小记:async/await 本质是 Promise 的语法糖,理解了 Promise,再看 await 就一点也不神秘。
回到 笔记列表 查看更多。