异步深度

javascript是一门单线程语言
Event Loop是javascript的执行机制

**

为什么要用异步?

**

由于js是单线程的。只能在js引擎的主线程上运行。所以js代码只能一行一行执行

。不能同一时间执行多个js代码任务。这导致如果有一段耗时长的计算活着ajax请求。

如果没有异步,就会产生用户等待时间长。这个时候由于任务没有完成,用户其他操作

都会没有响应

常见的异步模式

回调函数

事件监听

promise

。。。

js如何实现异步

js的事件循环机制

js解析的时候。会被引擎分为两大类任务,同步任务与异步任务

同步任务:被推到执行栈按顺序执行

异步任务:当其可以被执行时,会被放到任务队列,等待执行

当执行栈中所有同步执行完,js引擎就会到任务列表查看是否有任务存在,并将任务放在

执行栈执行,执行完又去任务列表检查是否有可执行任务。这种循环检查机制被称为事件循环机制。

**

Promise

**
Promise 是抽象异步处理对象以及对其进行各种操作的对象

简而言之,让异步变得好看

pr加粗样式omise 是一个类

循环里处理异步

在Promise新建后会立即执行

它其中的回调函数会立即被放在微任务中 待同步函数执行完立即执行

优点:解决回调,链式调用,减少嵌套
缺点:无法抛出内部错误,新建立即执行无法取消,无法监测进行状态

javascript的执行和运行

执行和运行有很大的区别,javascript在不同的环境下,比如node,浏览器,Ringo等等,执行方式是不同的。而运行大多指javascript解析引擎,是统一的

微任务 promise process.nextTick 宏任务 setTimeout setInterval I/O script 同一次事件循环中 微任务永远在宏任务之前执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值