ES6-Promise对象
2019-05-09 本文已影响0人
叶叶叶xxx
1:什么是promise对象
promise对象是ES6新增的,为了解决回调函数的多层嵌套问题,用于封装异步任务
2:语法
使用构造函数创建Promise对象,参数是一个函数,函数中写异步任务的代码。
参数函数中有两个参数,resolve和reject,这两个参数也是函数。
let promise = new Promise((resolve, reject) => {
let success = true;
if (success) {
//异步任务执行成功时,调用resolve().如果有数据会传给.then回调函数。
resolve('成功');
} else {
//异步任务执行失败时,调用reject().err会传给.catch回调函数。
reject('失败');
}
})
promise.then(
//为promise对象添加任务成功时的回调函数
(data) => {
console.log(data) //成功
}).catch(
//为promise对象添加任务失败时的回调函数
//回调函数会在promise变为失败状态时执行
//如果promise已经是失败状态则会立刻执行。
(data) => {
console.log(data) //Promise {<resolved>: undefined}
})
3:两个参数,两种状态,两个回调函数
两个参数:
resolve
reject
两种状态:
resolve(); //resolve(data); 任务成功时状态
reject(); //reject(err); 任务失败时状态
两个回调函数:
then();任务成功时,会执行此回调函数。
catch();任务失败时会执行此回调函数。
PS:详解
1,promise对象,创建之后就会立刻调用异步任务所在函数。
2,promise对象的状态属性:
创建时---处于待定状态(padding)
成功时---处于完成状态(sucess)
失败时---处于失败状态(fail)
刚创建成功的promise,处于待定状态(padding),如果promise中函数调用了resolve(异步任务成功),
则由待定状态转为完成状态(sucess)。如果promise中的函数调用了reject(异步任务失败),则会由待定状态转为失败(fail)。一个promise对象的状态一但由待定转为成功或失败,则它的状态就确定了。
3, promise对象的.then方法,用于为promise对象添加任务成功时的回调函数。回调函数会在promise对象变为完成状态时执行,如果promise已经处于完成状态,则会立刻执行。
4,promise对象的.catch方法,为promise对象添加任务失败时的回调函数,回调函数会在promise变为失败状态时执行,如果promise已经是失败状态则会立刻执行。