我有600个网址的列表,我想将请求循环到。
当我收到它时,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;
}
})
答案 0 :(得分:1)
这将获取所有页面,将它们插入到集合中并使其在客户端上可用。但有几点需要注意。如果多次调用该方法,您将在数据库中获得重复项,不确定这是否是您的意图。此外,错误记录只发生在服务器上,永远不会显示给客户端,不知道这是否是你想要的。请注意,第二个Meteor.http.get
会传递回调,使其成为run async。
# 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');