- await后面接一个会return new promise的函数并执行它
- await只能放在async函数里
使用acync 和 await 获取成功的结果
function handler(){
return new Promise((resolve, reject)=>{
let sino = parseInt(Math.random() * 6 +1)
setTimeout(()=>{
resolve(sino)
},3000)
})
}
async function test(){
let n =await handler()
console.log(n)
}
test()
async 中的await handler() 函数先执行, test 要在3 秒后执行,test函数为异步
获取失败的结果
function handler(value){
return new Promise((resolve, reject)=>{
let sino = parseInt(Math.random() * 6 +1)
if(sino > 3){
if(vslue === 6){
resolve(sino)
}else{
reject(sino)
}
}else{
if(value === 6){
reject(sino)
}else{
resolve(sino)
}
}
})
}
async function test(){
try{
//把await及获取它的值的操作放在try里
let n =await handler(6)
console.log('大' + n)
}catch(error){
//失败的操作放在catch里
console.log('小' + error)
}
}
test()
把await 成功后的操作放到try 中,失败的放在 catch 中
使用promise
function handler(value){
return new Promise((resolve, reject)=>{
let sino = parseInt(Math.random() * 6 +1)
if(sino > 3){
if(value === 6){
resolve(sino)
}else{
console.log('error')
reject(sino)
}
}else{
if(value === 6){
console.log('error')
reject(sino)
}else{
resolve(sino)
}
}
})
}
Promise.all([handler(6),handler(6)])
.then(
(x)=>{console.log(x)},
(y)=>{console.log(y)}
)
promise.all 里面跟一个数组,数组的每一项都是一个promise 的函数调用, then的第一个参数是所有的promise都成功后调用,拿到所有promise的结果是一个数组;第二个参数拿到的是第一个失败的值
使用await
async function test(){
try{
let n = await Promise.all([handler(6),handler(6)])
console.log("xxx")
}catch(error){
console.log(error)
}
}
test()
async 会返回一个成功的 promise对象 resolved(成功的状态值)
如果没有resolved() 抛出,await 就拿不到结果, xxx打印不出来