Promise

146 阅读2分钟
  1. Promise 是什么?

    1.抽象表达

    1)Promise 是一门新的技术(ES6规范)

    2)Promise 是 JS 中 进行异步编程的新解决方案

    备注:旧方案是单纯使用回调函数

    2.具体表达

    1)从语法上来说:Promise 是一个构造函数

    2)从功能上来说:Promise 对象用来封装一个异步操作(例如:fs文件操作、数据库操作、AJAX、定时器)并可以获取其成功/失败的结果值

  2. Promise 怎么用?

    一般作为一个构造函数来使用,既需要 New 一下来创建一个 Promise 实例,它里面有3种状态,成功时候触发then...

  3. Promise 的好处是什么?

    1)支持链式调用

    2)指定回调函数的方式更加灵活

    1.旧的:必须在启动异步任务前确定

    2.Promise:启动异步任务=>返回Promise对象=>给 Promise 对象绑定回调函数(甚至可以在异步任务结束后指定/多个)

  4. Promise 解决了什么问题

    它解决了回调地狱

  5. 有没有替代方案

Promise 虽然解决了回调地狱,但是并不能简化代码,所有一般工作中我会配合 async/await 来使用。

  1. Promise.resolve 方法:(value)=>{}

    (1) value:成功的数据或 Promise 对象

    说明:返回一个成功/失败 Promise 对象

  2. Promise.reject 方法:(reason)=>{}

    (1) reason:失败的原因

    说明:返回一个失败的 Promise 对象

  3. Promise.all 方法:(Promise)=>{}

    (1) Promise:包含 n 个 Promise 的数组

    说明:返回一个新的 Promise,只有所有的 Promise 都成功才成功,只要有一个失败就直接失败

  4. Promise.all 方法:(Promise)=>{}

    (1) Promise :包含n个 Promise 的数组

    说明:返回一个新的 Promise,第一个完成的 Promise 的结果状态就是最终的结果状态