js之异步操作(事件循环机制及异步处理方式含promise)

本文探讨了JavaScript中的异步编程,重点介绍了事件循环机制和Promise作为异步处理的方式。JavaScript的单线程特性使得异步编程成为必要,以避免同步操作带来的阻塞问题。事件循环包括同步环境执行、任务队列处理和事件循环等步骤。Promise作为一种解决回调地狱的方法,提供了更清晰的异步任务链式调用结构。
摘要由CSDN通过智能技术生成

最近学习es6 看到promise和generater,最后发现他们的共同点都是通过维护状态来解决异步的一种方式,

由于js单线程运行的特点,所以前端编程一直离不开异步这个概念,先把这个知识点进行梳理。

先看同步问题,同步很简单就是程序排队执行,但同步会存在阻塞问题
同步阻塞:

// 这是一个阻塞式函数, 将一个文件复制到另一个文件上
function copyBigFile(afile, bfile){
    var result = copyFileSync(afile,bfile);
    return result;
}

如上所示若copyFileSync用时一小时那么一小时后copyBigFile才会有返回结果,这就是同步阻塞。

所以js异步的出现来解决同步阻塞问题

异步概念:异步就是cpu跳过等待,先处理后续的任务(JavaScript 语言对异步编程的实现,就是回调函数)
先看js在单线程下如何实现异步操作:

 

如上图为JS运行机制图(事件循环示例图),流程如下:
 

step1:主线程读取JS代码,此时为同步环境,形成相应的堆和执行栈;

    step2:  主线程遇到异步任务,指给对应的异步进程进行处理(WEB API);

    step3:  异步进程处理完毕(Aj

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值