【问题标题】:Running parallel HTTP Requests in Meteor在 Meteor 中运行并行 HTTP 请求
【发布时间】:2020-11-23 21:12:12
【问题描述】:

假设我有一组需要从外部 API 更新的文档。在客户端,我获取这些文档,然后以 Meteor 方法将调用委托给服务器上的 API

//on client
const docs = Docs.find().fetch();
for (let doc of docs) {
  //Delegate to Server to handle actual request to external API and updating to DB
  Meteor.call('updateFromExternalAPI', doc);
}

我知道这效率不高,我想并行运行这些请求。我以前使用过Promises.all(),并且了解在标准 JS 和其他框架中可能有无数种方法可以做到这一点。但是,在 Meteor 中做这样的事情的理想模式是什么?我是否必须依赖其他 npm 包?

任何当代博客、教程将不胜感激。

谢谢!

【问题讨论】:

  • Meteor.call 不是异步的(因此是并行的)吗?无论是在您的代码中还是在某些实用程序中,您都必须至少循环一次 docs 才能进行调用。

标签: javascript node.js http asynchronous meteor


【解决方案1】:

我想并行运行这些请求

没有看到你的服务器代码,我猜唯一缺乏使代码完全并行的东西是updateFromExternalAPI 方法开头的this.unblock()。这将允许立即调用下一个方法,而不是等待上一个方法调用返回。

在 Meteor 中执行此类操作的理想模式是什么?

理想情况下,您可以编辑updateFromExternalAPI(或制作类似方法)以同时获取所有docs 并自行进行迭代。

更好的是,该方法将.fetch() 数据而不是从客户端接收完整的文档。无论如何,服务器应该已经可以访问这些。如有必要,服务器可以根据客户端发送的条件(例如_ids 的列表)进行过滤。

这有帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多