小编Edm*_*ral的帖子

实现Promise.all

Eloquent Javascript一书的第17章中的一个练习是实现Promise.all()方法,我想出了这个实现(它不起作用):

function all(promises) {
  return new Promise(function(success, fail) {
    var successArr = new Array(promises.length);
    if (promises.length == 0)
      success(successArr);
    var pending = promises.length;
    for (var i = 0; i < promises.length; i++) {
      promises[i].then(function(result) {
        successArr[i] = result;
        pending -= 1;
        if (pending == 0)
          success(successArr);
      }, function(error) {
        fail(error);
      });
    }
  });
}


// Testing
function soon(val) {
  return new Promise(function(success) {
    setTimeout(function() { success(val); },
               Math.random() * 500);
  });
}
all([soon(1), soon(2), soon(3)]).then(function(array) {
  console.log("This …
Run Code Online (Sandbox Code Playgroud)

javascript promise

7
推荐指数
1
解决办法
2574
查看次数

标签 统计

javascript ×1

promise ×1