美文网首页
Promise 对象(笔记)

Promise 对象(笔记)

作者: 灰灰_82a6 | 来源:发表于2019-08-29 17:18 被阅读0次

1.Promise 实例

定义一个Promise实例,接收一个函数,函数中的两个参数分别是resolve和reject。resolve是异步操作成功之后调用,reject是失败之后调用。

const promise = new Promise(function(resolve, reject) {
  
});

注意:Promise 创建后就会立即执行,状态变为失败或者成功之后就不会再改变了。

2.Promise.prototype.then()

Promise实例生成以后,会有一个then方法。(这个then方法是定义在原型对象Promise.prototype上的)。then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。

promise.then(function(value) {
  // success
}, function(error) {
  // failure
});

then方法可以链式调用:前一个回调函数,有可能返回的还是一个Promise对象(即有异步操作),这时后一个回调函数,就会等待该Promise对象的状态发生变化,才会被调用。

const p = function(greeting) {
        return new Promise((resolve) => {
            setTimeout(() => {
                resolve(greeting)
            }, 1000)
        })
}

p("hello").then(value => {
       console.log(value); //1s之后弹出hello
       return p("world");
 }).then(value => {
      console.log(value); //再过1s弹出world
})

注意,如果某一个then执行后状态变为rejected,就不会继续执行then方法,而是执行rejected回调函数。

3.Promise.prototype.catch()

如果不想使用then的第二个参数去处理错误,可以使用catch。

p.then(value => {
     // success
}).catch(error => {
     // failure
});

4.Promise.prototype.finally()

finally方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。(ES2018 引入标准的)

promise
.then(result => {···})
.catch(error => {···})
.finally(() => {···});

5.Promise.all()

Promise.all方法把多个实例包装成一个新的 Promise 实例,当几个实例都是成功状态,则新实例p就是成功状态。如果某一个是失败状态,则新实例就是失败状态。

const p = Promise.all([p1, p2, p3]);

注意:如果某个参数不是promise实例,则会把它自动转换为promise实例。

6.Promise.race()

Promise.race()也是把多个实例包装成一个新的实例,当其中某一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。

const p = Promise.race([p1, p2, p3]);

注意:如果某个参数不是promise实例,也会把它自动转换为promise实例。

7.Promise.resolve()

将现有的对象转换为Promise 对象,并且状态为resolved。

Promise.resolve('foo')
// 等价于
new Promise(resolve => resolve('foo'))

注意: 参数是一个promise实例,会直接返回这个实例。

8.Promise.reject()

返回一个rejected状态的Promise 对象。

相关文章

  • Promise,async,await笔记

    Promise,async,await笔记 Promise 创建promise对象 Promise对象构造方法传入...

  • Promise 笔记

    笔记 1. 构造方法 创建promise对象的流程如下����: new Promise(fn) 返回一个prom...

  • Promise 对象(笔记)

    1.Promise 实例 定义一个Promise实例,接收一个函数,函数中的两个参数分别是resolve和reje...

  • Promise 对象 笔记

    Promise 就是一个对象,用来传递异步操作的消息。 用法: 1、创建一个promise实例 const pro...

  • Nodejs Promise 读书笔记

    Nodejs Promise 读书笔记 前言 Promise是抽象异步处理对象以及对其进行各种操作的组件。(Pro...

  • Promise then方法的链式调用

    返回的是非promise对象 优化:可能返回promise对象和非promise对象

  • ES6之promise(resolve与reject)

    一、 Promise.resolve() 有时需要将现有对象转为 Promise 对象,Promise.resol...

  • Promise 对象学习笔记

    一、Promise是什么?Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和强大,...

  • Promise对象学习笔记

    Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案-回调函数和事件更合理和强大。所谓P...

  • ES6-Promise对象 (下)

    ES6-Promise对象 (上) 1.Promise对象方法 (1)Promise.all(iterable);...

网友评论

      本文标题:Promise 对象(笔记)

      本文链接:https://www.haomeiwen.com/subject/rufbjctx.html