2016-04-21 5 views
0

J'essayais d'obtenir des informations de googlesheets en utilisant météore. Je veux l'appel à Google Sheets à effectuer de manière synchrone, donc je googlé une solution et j'ai essayé de suivre les instructions indiquées ici: https://themeteorchef.com/snippets/synchronous-methods/Meteor.wrapAsync ne fonctionnait pas

Je veux utiliser le Meteor.wrapAsync parce que le package Google Sheets J'utilise n'a pas fonctionné bien avec des fibres, l'utilisation de futures soulève une erreur.

Ceci est mon code (une version de test simplifié):

fakeRead2 = function(sheetID) { 
    var my_sheet = new GoogleSpreadsheet(sheetID); 
    var syncFunc = Meteor.wrapAsync(my_sheet.useServiceAccountAuth); 
    var res = syncFunc(google_service_json, function(err) { 
     console.log("1"); 
     return "2"; 
    }); 
    console.log(res); 
}; 

Je me attendais une sortie de 1 et 2, mais je suis arrivé:

I20160421-16:55:19.535(0)? undefined 
I20160421-16:55:19.873(0)? 1 

Alors CONSOLE.LOG (res) ; il n'est pas appelé après la fonction de synchronisation.

Je ne vois pas pourquoi il n'est pas appelé de manière synchrone. Quelqu'un peut-il me signaler ce que je fais mal?

Merci

Répondre

0

Il semble que vous devez fournir un thisArg

essayez de changer Meteor.wrapAsync(my_sheet.useServiceAccountAuth)-Meteor.wrapAsync(my_sheet.useServiceAccountAuth, my_sheet)

+0

Désolé, je suis la même sortie en utilisant votre suggestion. – razonasistemas