10
Próbuję zasymulować publikację wykonującą kilka prac i poświęcenie czasu na zwrócenie kursora.Jak mogę symulować powolną publikację Meteor?
Moja publikuje metody ma wymuszonego snu (przy użyciu przyszłości), ale aplikacja zawsze wyświetla tylko
Loading ...
Oto publikacja:
Meteor.publish('people', function() {
Future = Npm.require('fibers/future');
var future = new Future();
//simulate long pause
setTimeout(function() {
// UPDATE: coding error here. This line needs to be
// future.return(People.find());
// See the accepted answer for an alternative, too:
// Meteor._sleepForMs(2000);
return People.find();
}, 2000);
//wait for future.return
return future.wait();
});
i router:
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading'
});
Router.map(function() {
return this.route('home', {
path: '/',
waitOn: function() {
return [Meteor.subscribe('people')];
},
data: function() {
return {
'people': People.find()
};
}
});
});
Router.onBeforeAction('loading');
Pełny kod źródłowy: https://gitlab.com/meonkeys/meteor-simulate-slow-publication
Handy, dzięki! Zaktualizowałem moje pytanie, aby pokazać również popełniony przeze mnie błąd kodowania. –
Podpowiedź: nie próbuj szukać "Meteor._sleepForMs" u klienta, jest to metoda tylko serwerowa. –
Pytanie: To zadziałało dla mnie, dzięki. Ale tylko raz. Przypuszczam, że po pierwszym załadowaniu publikacja jest buforowana na kliencie. Czy istnieje sposób symulacji wolniejszego połączenia przy każdym odświeżeniu? (Lub przynajmniej przetestować to znowu?) – Arrowcatch