promise实例 中
var promise = new Promise(function(resolve,reject){
if(success){//异步执行成功
resolve()
}else{
reject()
}
})
1.可以把resolve()看作是成功时的出口 ,如果resolve括号中有参数,则then中即可接受到这个参数,然后使用它。
2.而reject()即为失败时的出口,当promise实例中任何一个环节出现错误,就会结束不再执行下一步,直接跳到catch中并且参数为错误信息,一般来说只要出现错误就会自动抛出错误,catch()就能接收到,所以reject()在特定的语境下才需要写。(我是这么理解的不知道有没问题)
下面是简单的例子
var a = 0
var promise = new Promise(function(resolve,reject){
setTimeout(function(){
a = 3
resolve(a) //模拟在异步操作成功时把a给resolve()也可以直接resolve
},3000)
})
promise.then(function(res){ //异步执行成功后再执行,
console.log(a) // 3
console.log(res) // 3
}).catch(function(err){//异步执行失败时抛出的错误被捕捉
console.log(err)
})