目錄
- promise的API
- 1.resolve
- 2.reject
- 3.reace
- 4.all
- promise的使用
- 1.執行多個回呼
- 2.promise串聯多個操作任務
- 3.例外穿透現象
- async與await
- 1.async
- 2.await
promise的API
1.resolve
let p1 = Promise.resolve(521);
//如果傳入的引數為 非promise型別的物件,則回傳的結果為成功promise物件
//如果傳入的引數為 Promise物件,則引數的結果決定了resolve 的結果
2.reject
let ps = Pomise.reject(new Promise((resolve,reject)=>{
resolve('ok');
}))
//如果傳入的引數為 非promise型別的物件,則回傳的結果為失敗promise物件
//如果傳入的引數為 Promise物件,則引數的結果決定了resolve 的結果
3.reace
let p1 = new Promise((resolve,reject)=>{
resolve('ok');
})
let p2 = Promise.resolve('Success')
let p3 = Promise.resolve('Oh Year');
//第一個回傳啥,結果就是啥
const result = Promise.race([p1,p2,p3]);
console.log(result)
4.all
let p1 = new Promise((resolve,reject)=>{
resolve('ok');
})
let p2 = Promise.resolve('Success')
let p3 = Promise.resolve('Oh Year')
//所有成功,才回傳成功
const result = Promise.all([p1,p2,p3]);
console.log(result);
promise的使用
1.執行多個回呼
let p = new Promise((resolve, reject) => {
resolve('OK');
});
p.then(value=>{
console.log(value);
})
p.then(value=>{
alert(value)
})
2.promise串聯多個操作任務
let p = new Promise ((resolve,reject)=>{
setTimeout(()=>{
resolve('OK')
},1000);
});
p.then(value=>{
return new Promise((resolve, reject)=>{
resolve("success");
});
}).then(value => {
console.log(value)
}).then(value=>{
console.log(value)
})
//then的value由前一個的回傳值決堤,所以第二個列印undifined
3.例外穿透現象
let p = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('ok');
},1000);
});
p.then(value => {
// console.log(111);
throw'失敗拉';
}).then(value=>{
console.log(222);
}).then(value=>{
console.log(333);
}).catch(reason => {
console.log(reason);
})
async與await
1.async
//async函式的回傳物件是一個Promise物件
async function main(){
//1.如果回傳值是一個非Promise型別資料,回傳成功物件,成功值就是回傳值
// return 521;
//2.如果回傳是一個promise物件,就有這個promise物件決定
return new promise((resolve,reject)=>
{
reject()
})
}
let result = main();
console.log(result);
2.await
async function main(){
let p = new Promise((resolve, reject) =>{
// resolve('ok');
reject('Error')
})
//1右側為promise的情況
// let res = await p;
// console.log(res)
//2右側為其它型別資料
// let res2 = await 20;
// console.log(res2);
//3如果promise是失敗的狀態
try{
let res3 = await p;
}catch(e){
console.log(e);
}
}
main();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/279640.html
標籤:區塊鏈
