我是Meteor的新手,也是JS的新手。
我正在使用的代码是:
服务器/ methods.es6
var cheerio = Meteor.npmRequire('cheerio');
/*****************************************************************************/
/* Server Only Methods */
/*****************************************************************************/
Meteor.methods({
/*
* Example:
*
* '/app/items/insert': function (item) {
* }
*/
player: function () {
const url = 'http://cdn.content.easports.com/fifa/fltOnlineAssets/C74DDF38-0B11-49b0-B199-2E2A11D1CC13/2014/fut/items/web/165434.json';
const response = Meteor.http.get(url);
return response;
}
});
的客户机/模板/汽车/ cars_list.es6
Meteor.call('player', function (err, res) {
if (err) console.log(err);
console.log(JSON.parse(res.content));
Session.set('player', JSON.parse(res.content));
});
/*****************************************************************************/
/* CarsList: Event Handlers */
/*****************************************************************************/
Template.CarsList.events({
});
/*****************************************************************************/
/* CarsList: Helpers */
/*****************************************************************************/
Template.CarsList.helpers({
cars: function () {
return Cars.find();
},
player: function () {
return Session.get('player');
}
});
的客户机/模板/汽车/ cars_list.html
<template name="CarsList">
<h1>Cars List</h1>
{{ player.Item.FirstName }}
<table class="table table-hover">
<thead>
<tr>
<th>Brand</th>
<th>Model</th>
<th>Fuel Type</th>
<th>Body Style</th>
<th>Top Speed</th>
<th>Power</th>
<th>Edit</th>
</tr>
</thead>
<tbody>
{{# each cars }}
{{> car }}
{{/ each }}
</tbody>
</table>
</template>
大部分只是尝试执行HTTP请求的测试代码。
当我删除与player
相关的所有代码时,一切都是即时的。当player
代码存在时,页面会立即加载,但cars
数据在player
的HTTP请求得到解决之前不会显示。有没有办法将HTTP请求放在后台,而其他所有内容都按照以前的方式执行?
还有一种方法可以循环HTTP请求并在收到数据时显示数据吗?
答案 0 :(得分:1)
我建议您将方法代码放在both
文件夹中。这样,延迟补偿不会受到影响,您的用户界面将以预期的速度更新。
如果您需要隐藏客户端中的某些代码,可以将其放在client
和server
文件夹中。我没有对此进行测试,但我认为如果客户端调用的结果不同(即他将其与控制台混淆),则会将其数据回滚到服务器。
这样,您可以在尚未返回的情况下模拟服务器的方法结果。但是,请记住,无论您使用何种设置,最终都必须等待网站数据继续运行,无论是在客户端还是服务器上。 如果你这样调用你的数据,我认为它不仅会停止你的mongo数据,还会停止你的js函数执行(事件循环)。我可能错了(这里也是新手)
也许您应该阅读fiber and future, and the async calls。在我看来,这是要走的路。
祝你好运!