JavaScript 异步编程学习笔记

JavaScript 的异步编程
本内容为学习笔记
1、JavaScript 执行模式:同步 和 异步;
1.1、同步
1.1.1、优缺点
优点:因为单线程,实现起来简单;
缺点:执行效率低;

1.1.2、解决方案
为了解决 js 同步编程的缺点,提出了“异步编程”的解决方案。
JavaScript 异步编程的4种方法:

Method1: 回调函数
同步情景:
f1();
f2();
说明:在f1返回结果之前,f2没有执行(类似于接力赛中,被交接人在等待上一棒到达接力点时初速度为0);

改写成异步 =>:
function f1(callback) {
setTimeOut (function () {
// f1的任务代码
callbak();
})
}
f1(f2);
说明:在f1返回结果之前,f2函数已经开始执行,只是在等待f1的返回结果(类似于接力赛中,被交接人在等待上一棒到达前就已经跟跑,到达接力点(交接棒的时候)时初速度不为0);
注意:
1、异步和回调函数没有必然的联系,同步中也可以使用回调函数,但是意义不大,一般人不会这么写;
2、回调函数只是异步编程实现的一种方式罢了;

Method2: 事件监听(事件驱动模式)
A.实现
f1 绑定 f2 事件: f1.on('done', f2);
f1改写:
function f1() {
setTiemOut(function () {
// f1的任务代码
f1.trigger('done');
}, 1000);
}
说明:当 f1 任务完成后,立即触发绑定事件;
B.与M1方法的区别
M2方法可以绑定多个事件;

Method3:发布/订阅(发布订阅模式/观察者模式)
A.模式介绍
假定存在一个“信号中心”,人们发信号时,都往信号中心发布,人们接收信号时,都要向信号中心订阅想要的信号才能接收该信号;

B.与Method2方法的区别:
M2方法相当于网购中的没有中间商(类似淘宝),直接商家和客户;
M3方法中的“信号中心”相当于一个容器或者平台,商家 <--> 平台 <--> 客户;

C.使用jQuery 插件实现
f2 首先订阅done“信号”: jQuery.subscribe('done', f2);
f1 执行完任务后,发布done“信号”:
function f1() {
setTiemOut(function () {
// f1的任务代码
jQuery.publish('done');
}, 1000);
}

Method4:Promise 对象(推荐使用)
需单独学习详情参考:
阮一峰的网络日志:ES6 入门(第三版)中 Promise 的介绍


1.2、异步
优点:执行效率高;
缺点:执行顺序不好控制;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值