1.promise 是一個替代回調(diào)函數(shù)的箭昵,解決方案。傳統(tǒng)的回調(diào)需要回季,如果有多層家制,需要嵌套使用,但是promise改變了這種情況泡一,
由原來的嵌套颤殴,變成了正常順序執(zhí)行方式,而不需要把下一個執(zhí)行的寫在回調(diào)函數(shù)內(nèi)部鼻忠。
promise常用:reject reslove 跟在then之后的catch
一旦執(zhí)行了reject 或者 reslove,后面的promise狀態(tài)不會再變涵但。
代碼如下:
function test(){
//promise是一個構(gòu)造函數(shù),內(nèi)部接收一個回調(diào)函數(shù)帖蔓。
//回調(diào)函數(shù)內(nèi)部有兩個參數(shù),reslove是執(zhí)行成功的時候調(diào)用的矮瘟,reject是失敗調(diào)用的
var promise = new Promise(function(reslove,reject){
reslove(true);
});
return promise;
}
//調(diào)用該函數(shù)
test().then(function(value){
//這里的value會收到上一個reslove過來的值
retrun new Promise(function(reslove,reject){
//對上一次的值做一個判斷處理
if(value){
reslove("成功");
}else{
reject("失敗");
}
});
}).catch(function(val){
//同時這里還可以捕捉異常
}).then(function(value){
//如果沒有拋出異常會繼續(xù)上一次的值
});
2.async/await 語法糖
通過async 可以指定一個函數(shù)為異步函數(shù),執(zhí)行異步函數(shù)后才能使用await.
await的作用其實(shí)就是替代了then方法,將resolve的值直接返回塑娇,使用起來更加方便澈侠。
//示例
async function demo() {
var result = await test(); //這里可以直接接收到返回值
return result; //如果調(diào)用demo函數(shù)的話,也是需要使用await來接收result這個返回值的.
}
注意:當(dāng)return 一個await的值的時候埋酬,接收的函數(shù)也需要銅鼓await來接收哨啃,否則接收的數(shù)據(jù)會失敗烧栋。