不断调用/返回Meteor.method



我有一个600个url的列表,我想将请求循环到。

当我接收到每个内容时,是否可以console.log,而不是等待600完成,然后将其全部返回为1?

很抱歉,如果这看起来有点模糊,不确定用什么正确的术语来描述这一点。

  Meteor.methods({
    getNations: function () {
      this.unblock();
      var result = Meteor.http.get('https://www.easports.com/uk/fifa/ultimate-team/api/fut/item?jsonParamObject=%7B%22page%22:1%7D');
      var totalPages = JSON.parse(result.content).totalPages;
      for (var i = 1; i < totalPages; i++) {
        try {
          var page = Meteor.http.get('https://www.easports.com/uk/fifa/ultimate-team/api/fut/item?jsonParamObject=%7B%22page%22:' + i + '%7D');
          console.log(JSON.parse(page.content));
        } catch(e) {
          console.log('Cannot get page', e);
        }
      }
      return result;
    }
  })

这将获取所有页面,将它们插入到集合中,并使它们在客户端上可用。不过也有一些注意事项。如果你多次调用该方法,你会在数据库中得到重复的,不确定这是否是你想要的。此外,错误日志记录只发生在服务器上,从不显示给客户端,也不知道这是否是您想要的。请注意,第二个Meteor.http.get被传递了一个回调,使其异步运行。

# Shared code
Nations = new Mongo.Collection('nations')
# Server
Meteor.methods({
  getNations: function () {
    this.unblock();
    var result = Meteor.http.get('https://www.easports.com/uk/fifa/ultimate-team/api/fut/item?jsonParamObject=%7B%22page%22:1%7D');
    var totalPages = JSON.parse(result.content).totalPages;
    var callback = function(err, page) {
      if (err) 
        console.log('Cannot get page', e);
      else
        Nations.insert(page);
    }
    for (var i = 1; i < totalPages; i++) {
      Meteor.http.get('https://www.easports.com/uk/fifa/ultimate-team/api/fut/item?jsonParamObject=%7B%22page%22:' + i + '%7D', callback);
    }
    return result;
  }
});
Meteor.publish('nations', function() {
  return Nations.find();
});
# Client
Meteor.subscribe('nations');

最新更新