美文网首页
《全栈工程师修炼指南》学习笔记 15

《全栈工程师修炼指南》学习笔记 15

作者: VioletJack | 来源:发表于2023-02-17 12:21 被阅读0次

异步编程

  • JavaScript 回调函数容易引起回调地狱
setTimeout(
  () => {
    console.log(1);
    setTimeout(
      () => {
        console.log(2);
        setTimeout(
          () => {
            console.log(3);
          },
          1000
        );
      },
      1000
    );
  },
  1000
);
  • 后来有了 Promise,可以将回调函数以 then 的方式链式调用。
var run = steps => 
  () => 
    new Promise((resolve, reject) => {
      setTimeout(
        () => {
          console.log(steps);
          resolve(); // 一秒后的未来执行成功,需要调用
        },
        1000
      );
    });

Promise.resolve()
  .then(run(1))
  .then(run(2))
  .then(run(3));
  • 后来有了 async...await... 之后,代码看起来像是同步执行的一样。
async runAll() {
    await run(1);
    await run(2);
    await run(3);
}
  • Promise 通过给原始代码添加函数包装的方式实现了这里的“定义、传递、但不执行”的要求。
  • 聪明的程序员总在努力地创造各种工具,去改善代码异步调用的表达能力,但是越是深入,就越能发现,最自然的表达,似乎来自于纯粹的同步代码。大道至简。
  • JavaScript 生成器的原理:本质上来说,生成器将一个完整的方法执行通过 yield 拆分成了多个部分,并且每个部分都可以有输入输出,整个过程就是一个简单的状态机。它和其它函数一起,以反复挂起和恢复的方式一段一段地将任务完成。
  • 异步错误处理
    • promise 的 catch()
    • async/await 的 try...catch

最后

对于前端异步这块儿,前端社区和各种书籍教程都在反复讲了,这里复习下~

相关文章

网友评论

      本文标题:《全栈工程师修炼指南》学习笔记 15

      本文链接:https://www.haomeiwen.com/subject/ttrykdtx.html