多个异步请求之后统一处理数据(结合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);
    });
   
   

你可能感兴趣的:(前端)