---
url: https://sugarat.top/interview/js/promise.md
---

# Promise 的特点是什么，分别有什么优缺点？什么是 Promise 链？Promise 构造函数执行和 then 函数执行有什么区别？

## 特点

* 三种状态
  * pending:等待
  * resolved:完成
  * rejectde:拒绝
* 一旦从等待状态变成为其他状态就永远不能更改状态

## 优点

* 很好的解决了回调地狱的问题

## 缺点

* 无法取消
* 错误需要通过回调函数捕获catch

## Promise链

* 每次调用 then 之后返回的都是一个全新的Promise,因此又可以接着使用then方法,由此形成promise链
* 在 then 中 使用了 return，那么 return 的值会被 Promise.resolve() 包装

## Promise 构造函数执行和 then 函数执行有什么区别

* 构造 Promise 的时候，构造函数内部的代码是立即执行的
* then函数在promise.resolve()执行后执行
