【问题标题】:Simultaneous API calls with independent callbacks具有独立回调的同时 API 调用
【发布时间】:2015-11-19 11:51:06
【问题描述】:

我想多次调用同一个 API,但使用不同的键以更快地获得结果。

问题是我不需要等到收到第一次调用的结果就可以开始第二次调用,等等......

步骤如下:

1) 我有一个包含所有不同键的数组。

2) 从 API 获取数据(“APIKeys”是包含所有键的数组):

_.map(APIKeys,function(value, index){
    var newCount = count+(25*index);
    parseResult(Meteor.http.get("http://my.api.com/content/search/scidir?query=a&count=25&start="+newCount+"&apiKey="+value+""));
});

3) 我调用了一个函数(名为“parseResult”),它将格式化和过滤我从 API 获得的结果并将其保存到数据库中。

我想调用函数(第 3 步),而不必等待从 API 获取数据并在发出请求时继续使用其他键。

你知道我怎么能用流星做到这一点吗?

谢谢

【问题讨论】:

    标签: javascript api meteor callback simultaneous


    【解决方案1】:

    做这样的事情以异步方式使用HTTP.get()

    HTTP.get("http://my.api.com/content/search/scidir?query=a&count=25&start="+newCount+"&apiKey="+value+"", function (error, result) {
        // parse the result here
    });
    

    并在此处查看文档: http://docs.meteor.com/#/full/http_get

    【讨论】:

    • 我已经尝试过了,但问题是我想同时启动所有请求并让它们运行,直到他们获得数据并将其存储到数据库中。我找到了使用 Fiber 和 Future 的解决方案,它似乎可以工作,但我还不确定。
    • 我不明白为什么我写的不是一个好的解决方案,但如果你已经找到了一种方法,那就好了
    • 您的解决方案是正确的,但这并不是我真正想要的。我需要做你写的,但同时做 1000 倍。因此,我必须找到一个解决方案,不必等待第一个 API 调用结束才能开始第二个调用,等等……由于 API 很慢,我必须等待数据才能将其存储到数据库中。这很难解释,但总的来说我只需要使用 Future 和 Fiber 来管理事件循环,它现在就像魅力一样 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2010-09-06
    • 2012-07-16
    相关资源
    最近更新 更多