剛入門,沒深究~ ?-。-
經典:javascript Promise介紹?來自谷歌的說明,簡單直觀
Promise 構造函數接受一個函數作為參數,該函數的兩個參數分別是 resolve 方法和 reject 方法。如果異步操作成功,則用 resolve 方法將 Promise 對象的狀態,從「未完成」變為「成功」(即從 pending 變為 resolved);如果異步操作失敗,則用 reject 方法將 Promise 對象的狀態,從「未完成」變為「失敗」(即從 pending 變為 rejected)。
then()有兩個參數,一個成功案例的回調,另一個是失敗的情況。兩者都是可選的,因此您可以為成功或失敗的情況添加回調。
這是一個很好的例子,如果能夠獲取到對應url的xml請求,則req.status=200,在if中可以執行你想做出的操作,并執行resolve(req.response),其中req.response是請求得到的結果,如果找不到則返回req.status=404,并reject()返回錯誤。
在ionic2中,頁面回傳值的方法:
同上所描述那般
做出一個承諾
將該方法作為一個參數傳入push的頁面中
注意:最開始我本來是采用如下圖方式的,但是很不幸,出現了問題,問題所在就是關于這個this的作用域問題。這里要用到ES6的箭頭函數 Arrow Functions。普通function函數和箭頭函數的行為有一個微妙的區別,箭頭函數沒有它自己的this值,箭頭函數內的this值繼承自外圍作用域。
回傳值,將需要傳過去的指丟入contactsCallback中,即將數據從該頁面傳到上一個頁面中,并且then后,通過是執行了resolve()還是reject()來識別是否成功,如果成功,pop掉當前頁面,否則輸出錯誤。
參考文章:JavaScript進階之路——認識和使用Promise,重構你的Js代碼?了解Promise
一直以來,JavaScript處理異步都是以callback的方式。近幾年隨著JavaScript開發模式的逐漸成熟,CommonJS規范順勢而生,其中就包括提出了Promise規范,Promise完全改變了js異步編程的寫法,讓異步編程變得十分的易于理解。
1.什么是Promise
所謂Promise,字面上可以理解為“承諾”,就是說A調用B,B返回一個“承諾”給A,然后A就可以在寫計劃的時候這么寫:當B返回結果給我的時候,A執行方案S1,反之如果B因為什么原因沒有給到A想要的結果,那么A執行應急方案S2,這樣一來,所有的潛在風險都在A的可控范圍之內了。
Promise規范如下:
一個promise可能有三種狀態:等待(pending)、已完成(fulfilled)、已拒絕(rejected)
一個promise的狀態只可能從“等待”轉到“完成”態或者“拒絕”態,不能逆向轉換,同時“完成”態和“拒絕”態不能相互轉換
promise必須實現then方法(可以說,then就是promise的核心),而且then必須返回一個promise,同一個promise的then可以調用多次,并且回調的執行順序跟它們被定義時的順序一致
then方法接受兩個參數,第一個參數是成功時的回調,在promise由“等待”態轉換到“完成”態時調用,另一個是失敗時的回調,在promise由“等待”態轉換到“拒絕”態時調用。同時,then可以接受另一個promise傳入,也接受一個“類then”的對象或方法,即thenable對象。