await和promise結合使用的問題

2022-07-16 10:30:13 字數 966 閱讀 9328

由於目前(2020)的情況, 我們寫東西的時候, 通過 babel 的轉譯(transpile), await 和 async 和 promise 經常會有一起的情況.

工作中直接跟蹤**, 發現有一些序列上的問題需要注意

比如, 多個promise一起並行的情況

new promise(rel=>rel('ok1')).then(d=>console.log(d)).then(d=>console.log(1));

new promise(rel=>rel('ok2')).then(d=>console.log(d)).then(d=>console.log(2));

這種情況下, 我們的執行, 並不是 首先執行完第乙個promise, 而是按照 微佇列的進入順序, 依次進行執行

執行結果

'ok1'

'ok2'

12

但是如果我們使用了 await 的時候, 情況確有些差別

async function withawait()

withawait()

執行結果

'ok1'

1'ok2'

3

其實我們從語義上去理解, await 就是要讓後邊等待我後邊的非同步佇列進行執行完成,.then也是返回的非同步佇列.

預設的情況下, 我們的async 和 await修飾後的方法是直接返回乙個promise的.

比如

async function retpromise()

retpromise() instanceof promise // true

總結: js 是快速發展的, 佇列,非同步也是js的核心. 需要對其中有一些基本的理解才能夠更好的運用.

promise與async和await的區別

什麼是async await?async await是寫非同步 的新方式,以前的方法有 函式和promise。async await是基於promise實現的,它不能用於普通的 函式。async await與promise一樣,是非阻塞的。async await使得非同步 看起來像同步 這正是它的魔...

promise與async和await的區別

什麼是async await?async await是寫非同步 的新方式,以前的方法有 函式和promise。async await是基於promise實現的,它不能用於普通的 函式。async await與promise一樣,是非阻塞的。async await使得非同步 看起來像同步 這正是它的魔...

ajax和promise的結合使用

在需要依賴完成的ajax請求可使用promise保證執行順序在第乙個請求正確返回後再傳送第二個請求 定義乙個使用promise的ajax請求,這裡依賴jquery 引數中請求url為必填引數 const ajaxpromise param error err 第乙個請求 let step1 then...