【问题标题】:async parallel calls using async js llin使用 async js llin 的异步并行调用
【发布时间】:2017-01-25 22:16:36
【问题描述】:

arrayOfFunctions 是一个包含 1000 多个函数的数组。每个函数都对 AWS S3 进行异步调用以获取对象的元数据。

功能:

function (cb) {$.when(getMetadata("bucketname","objectkey"))
                    .done(function (data) {
                        cb(null, data)
                    });

对于单个函数,读取元数据需要不到一秒的时间,如果我一个一个地执行 1000 个元数据,那么每个函数需要 1 秒。

我如何使用 async.parallel 调用:

    async.parallel(arrayOfFunctions, function (err, result) {
            console.log(result);
        }
    });

如果我使用 async.parallel,是不是意味着所有的函数都是一次并行执行的?我应该在 1-2 秒内一次获得所有结果吗?

谢谢

【问题讨论】:

    标签: javascript node.js amazon-s3 async.js


    【解决方案1】:

    不完全是。您可以同时打开多少个连接是有限制的。例如网络浏览器place a limit on this, each browser having a different limit.

    通常,只有少量的任务,你不会达到这个限制并感知。但是如果有 1000 多个任务尝试从 AWS 获取,您可能不会有您期望的 1-2 秒执行时间。

    还要考虑尝试同时下载 1000 张图像的带宽限制,您的服务器的互联网连接需要多快才能在 1-2 秒内全部下载?

    更多参考请见this stackoverflow discussion

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      相关资源
      最近更新 更多