异步编程

  • 同步:任务之间存在一定的约束关系,在执行过程中,存在一定的前后顺序

  • 异步:可以解释为两(多)者之间在随时间的执行过程中,两者之间没有约束关系,相互独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

    各任务以其相对独立的不可预知的速度向前推进。

异步一般需要通过多进程、多线程来实现。

应用场景:延时任务、耗时任务。

需求:需要监听延时-时间到达、耗时任务完成,在此时做一些操作。

技术方案

技术方案:ES6 诞生以前,异步编程的方法,大概有下面四种。

  • 回调函数:以函数作为参数。这个操作一般称为回调callback

    Callback是"call back"两个单字的合体,应该有听过" Call me back"的英文。电信公司中的说法大概是有客户打来电话给你,可是你正在电话中,客户会留话说请你等会有空时再"回电"给它。在程式开发上,callback的使用情境其实也类似—有空了/时间到了/任务执行完了,回过头来调用的。

  • 事件监听

  • 发布/订阅

  • ES6 Promise 对象

  • ES6 Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。

  • ES8 async+await

所有的技术 — 目标:使 异步任务完成后的 回调 更优雅。可读性更高。以同步的方式去写异步的代码

1. 回调函数

以函数作为参数,将此函数称为回调函数。而接收函数作为参数的函数也称为高阶函数。

缺点:可能造成回调地狱(Callback Hell)(多个任务之间相互依赖,回调函数一层层向下嵌套)

2. ES6 Promise对象

3. ES6 generator

4. ES8 async+await

results matching ""

    No results matching ""