2 2 幾種特殊的promise使用

2022-06-25 19:00:11 字數 1025 閱讀 6916

1.resolve函式的引數除了正常的值以外,還可能是另乙個 promise 例項,比如像下面這樣。

(1)如果p1的狀態是pending,那麼p2的**函式就會等待p1的狀態改變;如:

const p1 = new promise(function (resolve, reject) );

const p2 = new promise(function (resolve, reject) )

上面**中,p1和p2都是 promise 的例項,但是p2的resolve方法將p1作為引數,即乙個非同步操作的結果是返回另乙個非同步操作。

注意,這時p1的狀態就會傳遞給p2,也就是說,p1的狀態決定了p2的狀態。如果p1的狀態是pending,即p1為pending狀態的promise物件。那麼p2的**函式就會等待p1的狀態改變;如果p1的狀態已經是resolved或者rejected,那麼p2的**函式將會立刻執行。

(2)如果promsiea執行器函式的resolve/reject中的引數是promiseb例項,那麼promiseb的狀態和狀態值會替代promsiea的狀態、狀態值。(並且promsiea會在promiseb從pending狀態改變以後再得到狀態和狀態值)

const p1 = new promise(function (resolve, reject) )

const p2 = new promise(function (resolve, reject) )

p2 .then(result => console.log(result))

.catch(error => console.log(error))

// error: fail

上面**中,p1是乙個 promise,3 秒之後變為rejected。p2的狀態在 1 秒之後改變,resolve方法返回的是p1。由於p2返回的是另乙個 promise,導致p2自己的狀態無效了,由p1的狀態決定p2的狀態。所以,後面的then語句都變成針對後者(p1)。又過了 2 秒,p1變為rejected,導致觸發catch方法指定的**函式。

幾種特殊的方陣

對角矩陣 除了對角線上的元,其它地方的元為零 aij 0 i j 可記做diag a11,a22,ann 數量矩陣 主對角線上的元都相等 diag a,a,a 稱為數量矩陣 當a 1時,稱n階數量矩陣 為n階單位矩陣,記做en或e.上三角矩陣和下三角矩陣 主對角線左下方的元全為零的n階矩陣,稱為上三...

linux中的22個特殊字元

1 重定向輸出符號。2 重定向輸出符號,但有追加的功能。3 2 錯誤重定向輸出符號,覆蓋原檔案內容。4 2 錯誤重定向輸出符號,有檔案內容追加的功能。重定向 i o。linux shell環境中支援輸入輸出重定向,用符號 和 來表示。0 1和2分別表示標準輸入 標準輸出和標準錯誤資訊輸出,可以用來指...

2 2 CyclicBarrier的理解和使用

快速理解 給所有執行緒加上了乙個屏障,只有所有的執行緒都到達屏障之後 即cyclicbarrier初始值count 0 所有執行緒才會繼續執行 cyclicbarrier的簡單使用 初始cyclicbarrier是3,當三個執行緒都到達 屏障 即執行await 之後,三個執行緒才能夠自動執行 常用方...