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. 发布订阅/订阅者模式
posted @ 2019-03-23 10:54  Jasonpub  阅读(358)  评论(0编辑  收藏  举报