2014-09-26 6 views
5

Come si utilizza Meteor wrapAsync?Meteor wrap Sintassi asincrona

Qui di seguito è quello che sto cercando di fare

if (tempTreatment.groupId === undefined) { 
     // create new group 
     Meteor.wrapAsync(Meteor.call('createTreatmentGroup', salon, tempTreatment.groupName, tempTreatment.groupName)); 

     // get group id 
     var getGroup = Meteor.wrapAsync(Meteor.call('getTreatmentGroup', salon, tempTreatment.groupName)); 

     console.log(getGroup); 
     tempTreatment.groupId = getGroup._id; 
} 

voglio correre queste due funzioni Meteor.call synchronosly ma ottengo undefined su console.log(getGroup); che shuold solo restituire un oggetto.

risposta

7

Meteor.wrapAsync è un'API lato server progettato per avvolgere Node.JS funzioni asincrone richiedono un callback come ultimo argomento, per farle apparire sincrono attraverso l'uso di Future s, una Fibre sub-library. (Più su questo qui: https://www.discovermeteor.com/blog/wrapping-npm-packages/)

non è inteso per essere utilizzato sul lato client per trasformare asincrono Meteor.call in una chiamata sincrona perché sul browser, chiamate Invokation metodo remoto sono SEMPRE asincrona.

Per farla breve, non è possibile ottenere ciò che si sta tentando di fare, è necessario utilizzare le richiamate e nidificare la seconda chiamata al metodo all'interno della callback di successo della prima chiamata al metodo.

+1

In 0.9.3 c'è [Meteor.wrapAsync] (http://docs.meteor.com/#meteor_wrapasync) che potrebbe essere utilizzato 'Ovunque'. Questo errore? –

+3

Non l'avevo notato. Penso che abbiano creato una versione client di 'Meteor.wrapAsync' in modo che il codice che lo utilizza possa essere inserito nella cartella condivisa senza che si verifichino errori, ma in realtà è destinato all'uso del server. Nel caso in cui non sia fornita alcuna callback, la versione lato client di 'wrapAsync' definisce semplicemente un callback standard' logErr' da utilizzare, che registra semplicemente l'errore se presente: https://github.com/meteor/meteor/blob/ 9608e6205019b69a302cde62e21fcae1c7d22e3d/packages/meteora/helpers.js # L108 – saimeunt