互联网我来了 -- 2. js中"异步/阻塞"等概念的简析

本文简要分析了JavaScript中的异步非阻塞概念,通过买内裤的比喻解释了同步阻塞、同步非阻塞和异步非阻塞的区别。文中详细探讨了JS中的同步阻塞、同步非阻塞和异步非阻塞的执行情况,并指出异步非阻塞在提升程序效率和线程利用上的优势。
摘要由CSDN通过智能技术生成

一、什么是”异步非阻塞式”?

这个名字听起来很恶心难懂,但如果以 买内裤 这件事情来比喻执行程序的话就很容易理解“异步非阻塞式”的涵义了。

例如你是一个CPU的线程,你需要去执行一段 买内裤的程序, 你所需执行的步骤大致如下,

  1. 到一个商店里问老板, 你们店里还有没有nb牌内裤?
  2. 买到内裤,穿上
  3. 去小卖店买点火腿回家喂狗

这时候,你作为一个线程,你可能会遇到几种状况或选择。

  1. 店里面没货了,老板一直不答应你(阻塞你),你也一直等着(同步),第三天有货了才告诉你有了,你赶紧拿到穿上,再去买火腿 – [同步阻塞模式]
  2. 老板马上告诉你“没货了”(不阻塞你),然后你每天去店里问一声,直到有货了赶紧穿上,再去买东西喂狗 – [同步非阻塞]
  3. 你让老板有货了打电话叫你过来取,老板说“好的”(非阻塞),然后你就先去买东西喂狗了,过了两天老板叫你过去,你才拿到内裤并穿上 – [异步非阻塞]
  4. 你让老板有货了打电话叫你过来取, 老板又没答应你(阻塞), 然后你本来打算去先去买火腿的(异步),这时候也没法去了。 – [异步阻塞]

很明显,第三种方法是最聪明,前两种方法都略显效率低下。所以根据我们的理解,

同步或非同步,表明着是否需要将整个流程顺序地完成

阻塞或非阻塞,意味着你调用的函数会不会立刻告诉你结果

二、在js中的阻塞与同异步

你有一个函数和一段程序。

2.1 js中的同步阻塞

// 这是一个阻塞式函数, 将一个文件复制到另一个文件上
function copyBigFile(afile, bfile){
   
    var result = copyFileSync(afile,bfile);
    
vue-async-computed.js是一个用于Vue.js的库,它扩展了Vue的计算属性功能,使之可以支持异步数据获取和计算。 Vue.js计算属性是在模板根据数据的变化实时计算出新的结果,并实时更新到视图。然而,在某些情况下,数据的获取和计算可能会涉及异步操作,如从服务器获取数据或处理复杂的计算逻辑。此时,普通的计算属性就不再适用,需要使用异步计算属性才能处理这样的情况。 异步计算属性提供了一个方便的方式来处理异步数据的获取和计算。它的用法类似于普通的计算属性,但是需要使用一个异步函数来定义计算属性的逻辑。这个异步函数可以返回一个Promise对象,用于表示异步操作的结果。 在异步函数,我们可以执行异步操作,如发送网络请求、读取本地存储等。当异步操作完成后,我们可以通过Promise的resolve方法返回计算属性的结果。在模板使用异步计算属性时,Vue会自动等待异步操作完成并获取到计算属性的结果,然后更新视图相应的内容。 通过使用vue-async-computed.js,我们可以轻松地处理复杂的异步计算逻辑,如缓存异步计算结果、处理异步错误等。它的简单易用和强大的功能使得我们可以更加方便地开发处理异步数据的应用程序。无论是获取远程数据还是处理复杂的计算逻辑,vue-async-computed.js都可以帮助我们减少工作量,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值