Promise对象的几种方法

Promise,就是一个对象,用来传递异步操作的信息。

1、Promise对象有两个特点:

一是对象的状态不受外界影响,有3种状态:Pending(进行中)Resolved(已完成,又称Fulfilled)Rejectd(已失败)。只有异步操作的结果可以决定当前是哪一种状态,任何其他操作都无法改变这个状态;

二是一旦状态改变(从Pending变为Rsolved和从Pending变为Rejected),任何时候添加回调函数都会立即得到这个结果。

三是一旦新建它就会立即执行,无法中途取消。

ES6规定,Promise对象是一个构造函数,用来生成Promise实例,它接受一个函数作为参数,该函数的参数分别是resolve和reject。

resolve的作用是将promise对象的状态从“未完成”变成“完成”;

reject函数是将promise对象的状态从“未完成”变成“失败”。

2、Promise.prototype.then()

then方法是定义在原型对象Promise.prototype上的,他的作用是为Promise实例添加状态 改变是的回调函数。

then方法的第一个参数是Resolved状态的回调函数,第二个参数(可选)是Rejected状态的回调函数。

如:

getJSON("/post/1.json").then(

        post => getJSON(post.commentURL)

).then(

       comments => console.log("Resolved: ",comments),

       err => console.log("Rejected: ",err)

);

3、Promise.prototype.catch()

此方法是.then(null,rejection)的别名,用于指定错误发生时的回调函数。

一般来说,不要在then方法中(即then的第二个参数)定义Rejected状态的回调函数,而应总是使用catch方法。如:

promise
    .then(function(data){
        //success
     })
     .catch(function(err){
        //error
});

4、Promise.all()

此方法用于将多个Promise实例包装成一个新的promise实例。

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

此方法接收一个数组作为参数。

5、Promise.race()

也是将多个Promise实例包装成一个新的promise实例。

6、Promise.resolve()

将现有对象转换为Promise对象

7、Promise.reject()

Promise.reject(reason)方法返回一个状态为Rejected的新Promise实例。

猜你喜欢

转载自blog.csdn.net/Judy_qiudie/article/details/82828963