tft每日頭條

 > 生活

 > promise什麼時候使用

promise什麼時候使用

生活 更新时间:2025-04-19 18:30:19

promise什麼時候使用?js是單線程的,Promise解決就是異步編程一種思想,比傳統的回調函數和事件強大好多Promise相當于異步操作結果的占位符,他不會去訂閱一個事件,也不會傳遞一個回調函數給目标函數,而是讓函數返回一個Promise(相當于訂單号),下面我們就來說一說關于promise什麼時候使用?我們一起去了解并探讨一下這個問題吧!

promise什麼時候使用(promise是什麼)1

promise什麼時候使用

js是單線程的,Promise解決就是異步編程一種思想,比傳統的回調函數和事件強大好多。Promise相當于異步操作結果的占位符,他不會去訂閱一個事件,也不會傳遞一個回調函數給目标函數,而是讓函數返回一個Promise(相當于訂單号)。

Promise:英文承諾意思,Promise對象中保存某個未來才回結束的事件(通常是一個異步操作)的結果。

Promise有三個狀态:

pendding,rejected,resolved

Promise對象狀态的切換隻有兩種可能:

pendding->rejected,pendding->resolved

基礎用法:

new Promise((resolved,rejected)=>{})

Promise對象resolved,rejected函數,在異步事件狀态pendding->resolved回調成功時,會調用resolved函數;當異步操作失敗時,回調用rejected函數。

Promise的then(resolved,rejected)函數參數有兩個,一個resolved函數,一個rejected函數。

Promise的catch():捕捉promise錯誤函數,和then函數參數中rejected作用一樣,處理錯誤,由于Promise抛出錯誤具有冒泡性質,能夠不斷傳遞,會傳到catch中,所以建議所有錯誤處理放在catch中,then中隻處理成功的。

Promise一個大特色就是可以鍊式調用,在then,catch中可以返回Promise對象。

Promise.all([promise1,promise2]):參數是promise對象數組,等到所有promise對象狀态resolved,該對象的狀态會resolved,會立即調用then,當有一個promise對象為rejected,該對象的狀态就會邊城rejectd,執行catch。

Promise.race([promise1,promise2]):競速函數,當有一個promise對象狀态變化了,該對象就會采用和相同的狀态,并執行相應函數。

promise的生命周期

每個 Promise都會經曆一個短暫的生命周期,初始為挂起态( pending state),這表示異步操作尚未結束。一個挂起的 Promise 也被認為是未決的( unsettled )。一旦異步操作結束, Promise就會被認為是已決的( settled ),并進入兩種可能狀态之一:

1. 已完成(fulfilled ): Promise 的異步操作已成功結束;

2. 已拒絕(rejected ): Promise 的異步操作未成功結束,可能是一個錯誤,或由其他原因導緻。

一旦狀态改變,就「凝固」了,會一直保持這個狀态,不會再發生變化。當狀态發生變化,promise.then綁定的函數就會被調用。注意:Promise一旦新建就會「立即執行」,無法取消。這也是它的缺點之一。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved