美文网首页
Promise.all()实现

Promise.all()实现

作者: 宋乐怡 | 来源:发表于2020-03-28 00:37 被阅读0次

    要说的都在注释里。需要读者本身对这个方法略知一二。

    //方法在原型上定义,all方法接受一组可迭代对象作为参数,通常是一组promise
    Deferred.prototype.all = function(promises){
    //获取参数数组长度,即并发promise的个数。
        var count = promises.length;
    //保存当前this
        var that = this;
    //声明结果数组,存放参数数组的执行结果
        var results = [];
    //forEach循环是并发执行,Promise.all()可以处理并发请求的根源。
        promises.forEach(function(promise,i){
    //resolve()
            promise.then(function(data){
    //当每一个promise被处理,count-1
                count--;
    //传入resolve函数的参数data为与异步操作相关的附加数据。
                results[i] = data;
    //当参数数组中的所有promise都被处理时。promise.all()返回的promise被解决。
                if(count == 0){
                    that.resolve(results);
                }
    //如果某一个失败,promise.all()立即执行reject回调。
    //但剩余的promise依旧继续执行,只不过对promise.all的结果不会产生影响了。
            },function(err){
                that.reject(err);
            });
        }) ;
        return this.promise;
    }
    

    相关文章

      网友评论

          本文标题:Promise.all()实现

          本文链接:https://www.haomeiwen.com/subject/kemduhtx.html