Sto provando a racchiudere una funzione da un pacchetto nodo con wrapAsync.Meteor wrapAsync viene eseguito in modo sincrono ma non restituisce mai
filepicker = new Filepicker('API Key')
filepickerStatSync = Meteor.wrapAsync(filepicker.stat, filepicker)
result = filepickerStatSync(url);
console.log('after')
La funzione stat è riportata di seguito.
Tutto sembra funzionare correttamente ... la chiamata di richiesta risponde con il risultato corretto, il callback finale viene chiamato, l'intera operazione viene eseguita in modo sincrono/restituisce correttamente per quanto posso dire ... ma la chiamata di sincronizzazione non restituisce mai e console.log ('after') non viene mai colpito.
Non penso di aver commesso lo stesso errore di questo question perché la mia funzione ha un callback come ultimo parametro.
anche io non credo che la soluzione è in questo question perché la funzione avvolto finisce con chiamando la callback con l'errore e il risultato, che si suppone sia quello Meteor.wrapAsync è alla ricerca di una firma.
Filepicker.prototype.stat = function(url, options, callback) {
callback = callback || function(){};
if(!options) {
options = {};
}
if(!url) {
callback(new Error('Error: no url given'));
return;
}
request({
method: 'GET',
url: url+'/metadata?',
form: {
size: options.size || true,
mimetype: options.mimetype || true,
filename: options.filename || true,
width: options.width || true,
height: options.height || true,
writeable: options.writeable || true,
md5: options.md5 || true,
path: options.path || true,
container: options.container || true,
security: options.security || {}
}
}, function(err, res, body) {
console.log('err = '+err);
console.log('res = '+res);
console.log('body = '+body);
if(err) {
callback(err);
return;
}
var returnJson;
if(typeof(body)==='string'){
try {
returnJson = JSON.parse(body);
} catch(e) {
callback(new Error('Unknown response'), null, body);
return;
}
} else {
console.log('returnJSON');
returnJson = body;
}
console.log('callbacked');
callback(null, returnJson);
});
};
Grazie gentilmente. Silly oversight da parte mia. Tornerò e assegnerò la taglia quando il sistema me lo permetterà. Saluti! – funkyeah