promise為何出現?
為了解決callback hell
promise有三種狀態:
pending (初始化狀態)
fulfilled (成功)
rejected (失敗)
promise物件的狀態改變,只有兩種可能:從pending變為resolved、從pending變為rejected,之後狀態不會在改變了且狀態不可逆。
promise基本語法
new promise 例項 要return
傳入函式 要有resolve reject 倆引數
成功執行resolve 失敗 reject
then 監聽結果並且接收結果
不使用promise的話模擬乙個callback hell
)使用promise
function
loadimg
(src)
img.
onerror
=function()
img.src = src
})return promise
}var src =
''var result =
loadimg
(src)
result.
then()
result.
then
()
catch通常用於最後統一捕獲,我我們try catch一樣
error和eject都可以捕獲
result.
then
(function
(img)).
then
(function()
).catch
(function
(error)
)
如果我們希望我們的需求按順序載入(例如,先載入使用者資訊,然後再通過使用者資訊渲染好友列表之類的)
我們需要在.then之後return 另外乙個promise 就可以了
//鏈式操作
img1.
then
(function
(img)).
then
(function
(img)).
catch
(function
(er)
)promise.all 接收乙個promose物件陣列待全部完成之後一起執行success。(有點像js中短路操作的 且&&)
.then方法接收的datas是乙個陣列,依次包含多個promise返回值
promise.
all(
[result1,result2]).
then
(datas =>
)
和all不一樣的是陣列中只要有乙個完成就執行success
(參考js短路操作的 或||)
promise.
race
([result1,result2]).
then
(data =>
)
Promise基本用法
promise就是乙個非同步執行的解決方案,將原本非同步發生的事情轉化成同步。示例想讓funa先執行,funb後執行 初始 funa function else funb function else funa funb 如果使用這種寫法,funa和funb是非同步執行的,不能做到先後執行。所以引入了...
promise的基本使用
promise 主要是解決非同步深層的巢狀問題 promise的基本使用 var p newpromise function resolve,reject sele return p 補充 在promise中,我們通常用 then來得到非同步任務正確的值,用.catch來得到非同步任務錯誤的結果 現...
promise 的基本用法
resolve 既是函式也是引數,它用於處理成功的 在非同步任務成功的時候,去呼叫resolve reject 既是函式也是引數,它用於處理失敗的 在非同步任務失敗的時候,去呼叫reject 知識點1 例1 最基本的寫法 promise的基本語法哦 const aa new promise func...