promise 循环ajax,依次执行,同步

var arr=[1,2,3,4,5,6,7,8,9]

  function PromiseForEach(arr, cb) {
    let realResult = []
    let result = Promise.resolve()
    arr.forEach((a, index) => {
      result = result.then(() => {
        return cb(a).then((res) => {
          realResult.push(res)
        })
      })
    })

    return result.then(() => {
      return realResult
    })
  }

  PromiseForEach(arr, (ele) => {

    return new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log(ele);
            return resolve(ele);
          }, Math.random()*1000);
    })

  }).then((data) => {
    console.log("成功");
    console.log(data);
  }).catch((err) => {
    console.log("失败");
    console.log(err)
  });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容