多個異步請求之後統一處理數據(結合promise)

之前由於後臺給的數據給的系統化,需要多次調用才能獲取所需要的全部信息。但這時,想要獲得所有數據進行邏輯處理,變得十分麻煩,不好處理
後面爲了解決這個問題。查找許多資料,現在將資料分享整理,大家也可以提點意見,有沒有更好的解決辦法

先說一下promise與axios的結合使用

check: () => {
// 返回一個promise對象
    return new Promise((resolve, reject) => {
      axios({
            url: url
            method: 'post',
            data: {
            }
          })
            .then((res) => {
              resolve(res.data);
              // console.log(res);
            })
            .catch(function (error) {
              reject(error);
              // console.log(error);
            });
    });
  }

調用

check()
              .then(res => {
                console.log(res);
                  // 執行成功的回調函數
              },
              error => { console.log(error); 
              // 執行失敗的回調函數
              });



處理多個異步操作時

console.time('starttime');
    let p1 = new Promise((resolve, reject) => {
        axios({
            url: url
            method: 'post',
            data: {
            }
          })
            .then((res) => {
              resolve(res.data);
              // console.log(res);
            })
            .catch(function (error) {
              reject(error);
              // console.log(error);
            });
    });
    let p2 = new Promise((resolve, reject) => {
       axios({
            url: url
            method: 'post',
            data: {
            }
          })
            .then((res) => {
              resolve(res.data);
              // console.log(res);
            })
            .catch(function (error) {
              reject(error);
              // console.log(error);
            });
    });
    let p3 = new Promise((resolve, reject) => {
        axios({
            url: url
            method: 'post',
            data: {
            }
          })
            .then((res) => {
              resolve(res.data);
              // console.log(res);
            })
            .catch(function (error) {
              reject(error);
              // console.log(error);
            });
    });

    Promise.all([p1, p2, p3]).then(function(results) {
        console.log('results----->', JSON.stringify(results));
        console.timeEnd('starttime');
    }).catch(function(err) {
        console.log(err);
    });
   
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章