記錄使用Promise和await的乙個小坑

2021-09-18 03:01:47 字數 938 閱讀 8013

今天寫了一段類似這樣的**

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...