Promise扁平化

时间:2021-05-17 00:00:02   收藏:0   阅读:44

在以往开发中有时会出现以下场景:
在调用异步请求success callback中,进行下一次的异步请求,然后在success callback中在发起新的异步请求
例如:

  cont ajax = (url) => {
    return new Promise((resolve,reject)=>{
        let xhr = new XMLHttpRequest();
        xhr.open(‘GET‘,url);
        xhr.responseType = ‘json‘;
        xhr.onload = () => {
          if (this.status ===200) {
              resolve(this.response);
           } else {
              reject(new Error(this.statusText));
          }
        }
    })
  }
  ajax(‘url‘).then(res=>{
     ajax(‘url‘).then(res=>{
        ajax(‘url‘).then(res=>{
      })
    })
  })

这样就形成了回调地狱,及其不利于维护!

直接上写法

  cont ajax = (url) => {
    return new Promise((resolve,reject)=>{
        let xhr = new XMLHttpRequest();
        xhr.open(‘GET‘,url);
        xhr.responseType = ‘json‘;
        xhr.onload = () => {
          if (this.status ===200) {
              resolve(this.response);
           } else {
              reject(new Error(this.statusText));
          }
        }
    })
  }
   ajax(‘url‘)
     .then((res)=>{
        return  ajax(‘url‘)
     })
    .then((res)=>{
      return  ajax(‘url‘)
    })
    .then((res)=>{
      return  ajax(‘url‘)
    })

总结下:

原文:https://www.cnblogs.com/nxlbingo/p/14774761.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!