web前端中如何实现异步编程

1038 篇文章 2 订阅
190 篇文章 0 订阅

异步编程是前端通往全栈必须理解的知识点,各种异步编程解决方案层出不穷,外面使用各种方式的实现都有,我们如果要学习别人的代码,就需要了解各种异步解决方案的原理和它们出现的原因,以及使用场景。web前端中如何实现异步编程

我们常说JavaScript是单线程的,实际是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,不妨叫它主线程。与之对应的其他线程还有处理ajax的线程,定时器线程,读写文件的线程(node.js)等,可以叫它们为工作线程。

单线程工作是同步,跨线程工作会出现异步。异步的应用场景是需要执行比较耗时的操作,它的优点是由主线程发起后交给其他线程处理,不会阻塞主线程继续执行后面的代码,带来的问题是主线程难以感知其它线程处理的进度,其它线程处理完毕后需要通知主线程处理的结果,这个通知的方式我们之前一般采用的是回调。

实现异步仅仅是第一步,难点在于异步的处理结果通知,我们最终需要的是将异步代码处理得像书写同步代码一样直观和简洁,

如何实现异步编程?具体方法如下。

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

方法2 ,通过事件监听。可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去搞合”( Decoupling ),有利于实现模块化;缺点是整个程序都要变成事件驱动型,运行流程会变得很不清晰。

方法3 ,采用发布/订阅方式。性质与“事件监听”类似, 但是明显优于后者。

方法4 ,通过Promise 对象实现。Promise 对象是CommonJS 工作组提出的一种规范,旨在为异步编程提供统一接口。它的思想是,每一个异步任务返回一个Promise 对象,该对象有一个then 方法,九许指定回调函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值