promises 三种状态值(pending,fulfilled,rejected)
- pending: 初始状态,不是成功或失败状态。|
- fulfilled:意味着操作成功完成。
- rejected: 意味着操作失败 基本用法
var promise = new Promise(function(resolve, reject) {
// 处理结束后、调用resolve 或 reject
// 异步处理
});
promise.then(onFulfilled).catch(onRejected)
-
# async和await
- await后面接一个会return new promise的函数并执行它
- await只能放在async函数里
- 使用async和await获取成功的结果
function fn(){
return new Promise((resolve, reject)=>{
let sino = parseInt(Math.random() * 6 +1)
setTimeout(()=>{
resolve(sino)
},3000)
})
}
async function test(){
let n =await fn()
console.log(n)
}
test()
- 获取失败的结果
function fn1(猜测){
return new Promise((resolve, reject)=>{
let sino = parseInt(Math.random() * 6 +1)
if(sino > 3){
if(猜测 === '大'){
resolve(sino)
}else{
reject(sino)
}
}else{
if(猜测 === '大'){
reject(sino)
}else{
resolve(sino)
}
}
setTimeout(()=>{
resolve(sino)
},300)
})
}
async function test(){
try{
//把await及获取它的值的操作放在try里
let n =await fn1('大')
console.log('赢了' + n)
}catch(error){
//失败的操作放在catch里
console.log('输了' + error)
}
}
test()
async/await 的优势:可以很好地处理 then 链
对于单一的 Promise 链其实并不能发现 async/await 的优势,当需要处理由多个 Promise 组成的 then 链的时候,优势就能体现出来了,