Promise其实是一个构造函数
它有resolve,reject等方法,它的原型上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Promise.prototype上面的方法(then,catch),
一:Promise的使用
首先我们来看一下Promise的使用语法:
new Promise(function(resolve,reject){});
需要new一个promise实例化对象
在实例化Promise时需要传入一个函数excutor作为参数,并且在Promise执行时同步执行
三,resolve和reject的具体用法
先来说说resolve的用法
首先我们来看看Promise的几种状态:
- pending: 初始状态,成功或失败状态。
- fulfilled: 意味着操作成功完成。
- rejected: 意味着操作失败。
当我们在函数中调用resolve方法时,Promise的状态就变成fulfilled,即操作成功状态 Promise.prototype上面的then和catch方法 当Promise状态为fullfilled状态时执行then方法里的操作,then方法里面有两个参数onfulfilled(Promise为fulfilled状态时执行) 和onrejected(Promise为rejected状态时执行),步骤如下:
1,实例化Promise(new Promise(function(resolve,reject)))
2,用Promise的实例调用then方法
let promise = new Promise((resolve, reject)=>{
setTimeout(function request(){
let txt = '1'
if(txt == '1'){
resolve(txt)
}else {
reject('error')
}
},500)
})
这样就完成了一个承诺,成功时调用resolve,失败时调用reject,我们怎么调用呢?
promise.then(res=>{
//执行成功的回调
console.log(res)
},err=>{
//执行失败的回调
console.log(err)
})