Promise解決連續網絡請求
在調用API時,當遇到連續調用,並且需要上一個API調用的結果,或者必須等上一個請求完成後才能繼續請求,通常的延時函數並不能解決辦法,因爲如果上一個請求較長,超過設置的等待時間,同樣會出現問題,所以通常會使用callback()回調函數,但是在代碼的語義理解上會比較困難,尤其是多重的調用會形成所謂的“回調地獄”。因此,可以採用Promise對象解決這種網絡異步請求問題。
在wepy框架中默認對小程序提供的API進行了Promise處理
wepy官方文檔https://tencent.github.io/wepy/document.html#/?id=%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83
使用Promise。 框架默認對小程序提供的API全都進行了 Promise 處理,甚至可以直接使用async/await等新特性進行開發
示例:
var this = me;
wepy.request({
//調用apiA
})
.then(res =>{
me.dataA = res.data;
me.apply();
return wepy.request({
//調用apiB
})
})
.then(res =>{
me.dataB = res.data;
me.apply();
})
//如果需要繼續調用,則繼續引用
這樣寫的話代碼就完全可以從字面意思上來理解整個網絡請求流程,先調用A,當A調用完之後,再調用B,整個過程清晰明瞭,並且更符合編程邏輯。