Nel mio codice client Meteor, sto cercando di utilizzare un'API di terze parti che ha solo chiamate asincrone. Come posso utilizzare Meteor.wrapAsync sul client per effettuare chiamate a questa API in uno stile sincrono? La documentazione sembrano indicare che questo è possibile: http://docs.meteor.com/#/full/meteor_wrapasyncCome utilizzare Meteor.wrapAsync sul client?
Ecco alcuni esempi di codice mi piacerebbe chiamare in uno stile sincrono:
var func1 = function(callback) {
Meteor.setTimeout(function() {
console.log('func1 executing');
callback(null, {success: true});
}, 2000);
};
var func2 = function(callback) {
Meteor.setTimeout(function() {
console.log('func2 executing');
callback(null, {success: true});
}, 1000);
};
var wrapped1 = Meteor.wrapAsync(func1);
var wrapped2 = Meteor.wrapAsync(func2);
Template.test.rendered = function() {
wrapped1();
console.log('After wrapped1()');
wrapped2();
console.log('After wrapped2()');
};
Attualmente, questo produce questo output:
After wrapped1()
After wrapped2()
func2 executing
func1 executing
Mi piacerebbe produrre:
func1 executing
After wrapped1()
func2 executing
After wrapped2()
Ho messo questo merluzzo e in un MeteorPad qui: http://meteorpad.com/pad/fLn9DXHf7XAACd9gq/Leaderboard
Questo non è possibile, l'ambiente del browser è asincrono di progettazione, vedere questa risposta per maggiori informazioni sul motivo per cui 'Meteor.wrapAsync' è definito sul client ma si risolve in un comportamento di callback: http://stackoverflow.com/questions/26058205/meteor-wrapasync-syntax/26058613 # 26058613 – saimeunt