ES6---Promise初识

ES6规定,Promise对象是一个构造函数,用来生成Promise实例。

Promise接受一个函数作为参数,可接受两个参数resolve ,reject(这两个是JS引擎自带的)。例如:

var promise实例 = new Promise((resolve,reject) => {

      resolve('这是返回的结果')

})

promise实例.then((val) => {

console.log(val) // 这是返回结果

})

resolve 函数的作用是 把promise 的状态由 “未完成” 改为“成功”,并将异步操作执行的结果,作为参数传递出去。

reject 函数的作用是把 promise的状态 由未完成“”改为 “失败”,并将异步操作失败的错误信息,作为参数传递出去。

promise实例生成后 ,可以使用then()方法,then() 接受两个回调函数作为参数,第一个回调函数,可以接受Promise对象resolve传出 来的值,作为参数,第二个回调函数 (非必选)接受 Promise对象reject传出的值,作为参数。例如:

promis.all()方法

接受一个数组参数,但是每个参数必须是个Promise实例

只有四个请求都成功执行完毕或者有一个reject 失败,才会走all()后面的回调函数。

如果all()参数的两个Promise对象 有一个reject ,并且有catch方法,则会走参数定义的catch方法,如果没有才走all()的catch()方法。

Promise.race()方法

race()必须接收一个数组参数,记得用[ ],不然会报错。

race()是只要参数(P1 P2)的promise 对象有结果了,都会把值传给P 的回调函数。

Promise.resolve() 和 Promise.reject()方法

这两种 的参数首先不同:

resolve 有四种参数:

1. promise实例 会原封 不动的返回实例。

2.参数是个具有then()方法的对象,会把对象变为Promise对象,再立即执行他的then()方法

3. 参数没有then()或者参数不是对象,比如是字符串。由于没有then()不是异步的,所以当Promise.resolve()会立即返回一个状态为resolve的实例,所以回调函数会立即执行,并且把值传给回调函数。

4.没有参数。就是为了得到一个promise对象。const p = Promise.resolve();

reject()的参数没这么多情况。传入的是什么,传给回调函数的就是什么,

并且用catch捕获。

猜你喜欢

转载自blog.csdn.net/qq_33505829/article/details/88574848
今日推荐