作用:解决异步回调问题。有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。
传统方式 : 回调函数,事件
语法:
- resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去
- reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
- Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。then方法可以接受两个回调函数作为参数。第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。其中,第二个函数是可选的,不一定要提供。这两个函数都接受Promise对象传出的值作为参数。
let promise = new Promise((resolve,reject)={
// resolve : 成功调用
// reject : 失败调用
})
promise.then(res=>{
console.log(res) //成功结果
},err=>{
console.log(err) //失败结果
})
示例
let a = 11;
let promise = new Promise(function(resolve,reject){
// resolve:成功调用 reject:失败调用
if(a==10){
resolve('成功')
}else{
reject('失败')
}
});
// 参数:成功,失败
//promise.then(sucess,fail)
promise.then(res=>{
console.log(res) // 成功
},err=>{
console.log(err)
})
捕获错误
//相当于reject()
promise.catch(err=>{
console.log(err)
})
方法
//将现有的东西,转成一个promise对象,resolve状态,成功
Promise.resolve('aa');
//将现有的东西,转成一个promise对象,reject状态,失败
Promise.reject('aa')
//Promise.all方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。只要有一个错误,就会停止。
let p1 = Promise.resolve('111');
let p2 = Promise.resolve('222');
let p3 = Promise.resolve('333');
Promise.all([p1,p2,p3]).then(res=>{
console.log(res) //["111", "222", "333"]
});
屏幕快照 2018-04-06 上午1.41.46.png