Promise 用于处理异步调用的返回值
语法
new Promise(function(resolve,reject){ })
Promise构造器的参数是function类型,该function有两个为方法类型的参数,resolve和reject,如果调用了resolve说明该Promise被成功解析,而当调用了reject时,表明该Promise的值不能用于后续处理也就是被拒绝了。这两个方法主要用于初始化异步调用代码,一旦异步代码调用完成,要么调用resolve方法表示promise被成功机械,要么调用reject方法表明Promise被拒绝。
then(成功回调函数,失败回调函数)
pending状态的Promise对象可能被填充了(fulfilled)值,也可能被某种理由(异常信息)拒绝(reject)了。当其中任一种情况出现时,Promise对象的then方法绑定的处理方法(handlers )就会被调用(then方法包含两个参数:onfulfilled和onrejected,它们都是Function类型。当值被填充时,调用then的onfulfilled方法,当Promise被拒绝时,调用then的onrejected方法, 所以在异步操作的完成和绑定处理方法之间不存在竞争)
基本用法
function doThings(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve('成功')
},0)
})
}
doThings().then(function(res){console.log(res)}) //输出 - ‘成功’
链式用法
function doThings1(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve('成功1')
},0)
})
}
function doThings2(m){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve(m)
},0)
})
}
doThings1().then(function(res){return doThings2(res)}).then(function(res){ console.log(res)})
网友评论