promise实现原理

1. 什么是异步、同步?
在说同步和异步的同时,我们先来了解什么是JavaScript的执行机制

JavaScript是单线程的,这句话并不全 准确来说JavaScript的主线程是单线程的

在JavaScript当中还有类似ajax线程 事件线程 文件操作线程(node)等线程

在主线程当中还有执行栈的概念 在执行栈当中执行的是同步操作

而在队列例如事件队列当中的执行的是异步代码。可以了解一下什么是事件循环(Event Loop) 
2 . 什么是promise?

Promise 是社区提出的一种异步解决方案。(官方解释)

  • promise是一个容器,里面保存着某个未来才会结束的事件 (比如 异步操作的结果)
  • 语法上:promise是一个对象,可以从它获取异步操作的消息
  • promise提供统一的api,所以各种异步操作都可以用同样的方法进行处理

promise有以下几种特点

3种状态

pending

resolve

Reject

2种结果

resolve -> fulfilled

reject -> rejected

优点:

  1. 解决回调嵌套的层级书写问题

缺点:

  1. promise一旦新建,就会立即执行,中途无法取消
  2. 内部抛出错误,无法映射到外部
  3. 处于pending状态时,是不能知道目前进展到哪个阶段的 ( 刚开始?,即将结束?)

案例:

使用promise封装ajax异步加载图片等

处理异步的六种解决方案

  1. 回调函数
  2. promise
  3. Generator生成器函数
  4. async await
  5. 事件监听
  6. 发布订阅/订阅者模式

转载于:https://www.cnblogs.com/Jasonpub/p/10582916.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值