Javascript 异步编程方法

Javascript 语言的执行环境是 – 单线程 (single thread) .

单线程: 指一次只能执行一个任务, 如果有多个任务出现, 则会出现排队现象, 即等待当前的任务执行完成再执行下一个任务, 一次类推.
但是, 如果某一任务耗时多长, 就会导致后面的任务一直处于排队状态, 容易造成浏览器无响应 (假死) .

在 Javascript 中, 任务执行的模式被分为两种: 同步 (Synchronous) 和 异步 (Asynchronous) .

同步模式:

即按照任务的排列顺序, 后一个任务等待前一个任务结束,然后再执行, 程序的执行顺序与任务的排列顺序是一致的、同步的.

异步模式:

在异步模式中, 每一个任务都有一个或多个回调函数 (callback), 当前任务执行完成后, 不是执行下一个任务, 而是执行回调函数, 后一个任务也不会等待当前任务执行完再执行, 所以程序的执行顺序与任务的排列顺序是不一致的, 是异步的.

异步模式编程方法:

(一) 回调函数:
     通过改写耗时较长的任务, 将之后要执行的任务以回调函数的形式执行, 即把同步执行的任务改写成异步执行, 这样耗时较长的任务不会阻塞程序的执行, 相当于先执行程序的主要部分, 将耗时任务稍后执行.

回调函数的优点:
     是简单、容易理解和部署.
     缺点是不利于代码的阅读和维护,流程会很混乱,各个部分之间高度耦合 (Coupling) , 而且每个任务只能指定一个回调函数。

(二) 事件监听:
采用事件驱动模式, 任务的执行不依赖任务的先后顺序, 而取决于某个任务是否触发.

回调函数的优点:
     是比较容易理解,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以”去耦合” (Decoupling) , 有利于实现模块化。
     缺点是整个程序都要变成事件驱动型,运行流程会变得很不清晰。

(三) 发布 / 订阅 or 观察者模式:
     我们假定,存在一个”信号中心”,某个任务执行完成,就向信号中心”发布” (publish)一个信号,其他任务可以向信号中心”订阅” (subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做”发布/订阅模式” (publish-subscribe pattern), 又称”观察者模式” (observer pattern).

(四) Promises 对象:
     Promises 对象是 CommonJS 工作组提出的一种规范,目的是为异步编程提供统一接口。
简单说,它的思想是,每一个异步任务返回一个 Promise 对象,该对象有一个 then 方法,允许指定回调函数

f1().then(f2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值