首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

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

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

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

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

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

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

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

欢迎大家在评论区评论留言,小编会及时给大家解答疑惑的

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190816A0D65900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券