promise.all解決多個異步請求問題

問題引出:

 今天做項目時,遇到這樣一個情況,長傳圖片或者視頻等文件時,能夠選擇多個,但是每一個要請求一次接口,這就出現了一個問題,每一次請求之間都是有依賴關係的,如果使用ajax的重重嵌套,會顯得比較麻煩,而且容易產生回調地獄,所以我使用了promise.all  + axios來解決這個問題,也可以使用async,await等。

代碼如下:

let promiseArr = [];
//fileList是上傳的多個文件的數組
this.fileList.forEach((item) => {
     let fileDate = new FormData();
     fileDate.append('fodder', item.raw);

     let config = {
          headers: {
             'Content-type': 'multipart/form-data'
          },
    // 調用axios,axios返回的是promise對象
     var p1 = axios.post('/fodder/upload', fileDate, config);
    //將promise對象加入數組中
     promiseArr.push(p1);
});
// 調用Promise.all(),promiseArr中的promise全執行成功後才執行then中的代碼,否則執行catch
Promise.all(promiseArr)
       .then((res) => {
            this.$message({
                message: '圖片上傳成功!',
                type: 'success'
           });                        
        })
       .catch((err) => {
           this.$message({
                message: '圖片上傳失敗!',
                      type: 'warning'
                });
            });
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章