使用Promise異步並發請求,使用Promise並發的場景是什么


Promise是異步編程的一種解決方案,在ES6中Promise被列為了正式規范,統一了用法,原生提供了Promise對象,可以通過new 一個promise來使用它。  

就我而言,使用並發請求的場景還是不會很少的,Promise簡直太完美,太好用。

1、使用Promise並發的方法:

注:all會等兩個成功才表示請求成功(如果其中一個接口被跨域或者網絡中斷了,那么這整個promise.all就會失敗),如果一個接口處於pending狀態,那么resultData這個值會一直處於等待狀態。

使用all方法

//請求1
fetch1 = () => {
return http.post(`/aa/1`).then(res => { //return整個promis結果,返回給resultData,resultData通過.then接收
if (res.code === 0) {
return res.data;
}
});
};
//請求2
fetch2 = () => {
return http.post(`/aa/2`).then(res => { //return整個promis結果,返回給resultData,resultData通過.then接收
    if (res.code === 0) {
return res.data;
}
});
};

const   resultData =   Promise.all([fetch1,fetch2])    //異步並發,里面有幾個就寫幾個

resultData.then(res=>console.log(res))                 //通過.then獲取的都異步請求結果,是一個數組,長度與上面並發里面數組的長度一樣,就是每個接口相對應的結果


2、Promise並發使用的場景:

  1、之前我有個用戶列表有重置按鈕和編輯的功能,這兩個都是不同接口。

 

 2、現在需求變更了,需要將重置密碼改到編輯彈窗里面,給用戶輸入密碼。點擊確定時候需要去同時做到兩個接口處理完畢loading后才關閉彈窗的效果

 

 這時候就需要並發異步請求去請求接口了。(題外話:做法可以通過后端直接修改接口去完成,前端也不用並發,但是前端處理並不難。)

事實上這種場景還是有很多的,如:需要通過獲取兩個接口的值,然后再去等這兩個接口請求的值,作為參數去請求另一個接口的情況也有過。我就不一一例舉了。

末尾貼以下promis基本用法鏈接:這個人寫的很清楚了,我只是貼出實際應用場景來結合用法。

https://www.jianshu.com/p/3023a9372e5f

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM