今天寫了一段類似這樣的**
function
sleep()
,1000);
})}async
function
test1()
);console.
log(
"ret="
+ret)
}test1()
;
test1()
方法中呼叫了await來處理sleep()
返回的promise
,
我期望的輸出是
err=failed
但是實際上輸出:
err=failed
ret=undefined
經過一番折騰後,可達預期的**可以這樣寫:
async
function
test2()
catch
(err)
}test2()
;
事後仔細想想問題出在let ret = await sleep().catch()
這句**,由於這是乙個鏈式呼叫,所以當觸發了catch呼叫後,就可以理解為await了catch()返回的這個promise,即整個表示式的返回值是catch(()=>{})
中匿名函式的返回值
async
function
test1()
);console.
log(
"ret="
+ret)
}test1()
;
得到輸出:
err=failed
ret=0
Promise的理解和使用
官方 1 1.promise物件用於非同步計算 1 2.promise表示乙個現在,將來或用不可能可用的值 理解 2 1.主要用於非同步計算 2 2.可以將非同步操作佇列化,按照期望的順序執行,返回符合預期的結果 2 3.可以在物件之間傳遞和操作promise,幫助我們處理佇列 1.同步 不同的事情...
ajax和promise的結合使用
在需要依賴完成的ajax請求可使用promise保證執行順序在第乙個請求正確返回後再傳送第二個請求 定義乙個使用promise的ajax請求,這裡依賴jquery 引數中請求url為必填引數 const ajaxpromise param error err 第乙個請求 let step1 then...
Promise簡單使用
reject 方法 當promse中包含非同步操作時,例項的 then catch 會在下個 eventloop執行,但是promise中的 會同步執行 console.log 4 settimeout 200 const promise newpromise resolve,reject prom...