React Native中經(jīng)常會看到Promise機(jī)制。
Promise機(jī)制代表著在JavaScript程序中下一個偉大的范式??梢园岩恍?fù)雜的代碼輕松擼成一個串,和Android中的rxjava非常像。
Promise代表一個任務(wù)結(jié)果,這個任務(wù)有可能完成,有可能沒有完成。Promise模式唯一需要的一個接口是調(diào)用then方法,用來注冊當(dāng)Promise完成或者失敗時調(diào)用的回調(diào)函數(shù)。
一般異步函數(shù)用到了Promise機(jī)制。
在異步操作之前通常異步操作是借助回調(diào)函數(shù)的。
onScuccessCallback(result){
//... 成功的回調(diào)
}
onErrorCallback(error){
//... 失敗的回調(diào)
}
doSomething(){
try {
this.AsyncFunction(para,this.onScuccessCallback,this.onErrorCallback)
}catch(errors){
//...
}
}
使用Promise機(jī)制后, 就直接通過then擼成串就好了
this.AsyncFunction(para).then(
(para)=>{
// 處理成功的事件
}
).catch(
(error)=>{
// 處理失敗的事件
}
)
這還體現(xiàn)不出優(yōu)勢來, Promise的真正強(qiáng)大之處在于可以方便的實現(xiàn)Promise的多重鏈接,可以參考官方的例子。
getMoviesFromApiAsync() {
return fetch('http://facebook.github.io/react-native/movies.json')
.then((response) => response.json()) //獲取結(jié)果的json傳遞給下個then
.then((responseJson) => { //執(zhí)行成功獲取結(jié)果
return responseJson.movies;
})
.catch((error) => { //執(zhí)行失敗
console.error(error);
});
}
更多精彩請關(guān)注微信公眾賬號likeDev。

likeDev.jpg