2012-11-13 11 views
5

Attualmente non ricevo alcun valore di ritorno per la seguente funzione, nonostante il suggerimento che si tratti di una chiamata sincrona. Se lo faccio in modo asincrono (cioè funzione (errore, blah) {console.log (blah);}), ottengo l'output corretto e previsto.Meteor.call ("function", arg) non si verificano in modo sincrono

Template.file_nav.files = function(path) { 
    path = path || "/"; 
    var x = Meteor.call('get_files', path); 
    return x; 
} 

Ecco il codice lato server per il metodo "get_files":

Meteor.methods({ 
    get_files : function get_files(path) { 
     return [ 
     { "name" : " bob" }, { "name" : "alice" }, 
     ]; 
    } 

Inoltre, ecco la parte HTML che viene sempre chiamato in modo corretto, nel caso in cui sia rilevante:

<template name="file_nav"> 
    <div> 
    <ul style="dirnav"> 
    {{#each files}} 
    {{#if isDirectory this}} 
     <li><a href="javascript:void(0)" onclick="get_directory('{{name}}')">{{ 
    {{else}} 
     <li><a href="javascript:void(0)" onclick="get_file('{{name}}')">{{name} 
    {{/if}} 
    {{/each}} 
    </ul> 
    </div> 
</template> 
+0

è possibile spiegare un po 'di più? forse un breve esempio. – user1821985

+0

Credo che un round-trip sincrono client-server-client non sia possibile in Meteor. 'Meteor.call' è solo sincrono quando viene eseguito sul server node.js. Le invocazioni lato client di 'Meteor.call' devono utilizzare l'argomento' asyncCallback' per ottenere risultati dal server; le chiamate di 'call' sul lato client non sono sincrone. (C'è un'eccezione a questo, ma è in un caso particolare in cui 'call' è bloccato dal contattare il server e fa un'operazione di chiamata' sincrona solo client.) – apsillers

risposta

2

Se leggi il corpo dei documenti pertinenti (http://docs.meteor.com/#meteor_call) vedrai che dice:

"Sul client, se non si passa una richiamata e non sei all'interno di uno stub, chiamata tornerà indefinita, e si avrà modo di ottenere il valore di ritorno del metodo"

Così il comportamento stai vedendo è quello che dovresti aspettarti. Penso che i documenti potrebbero essere un po 'più chiari qui.

+4

Non ho capito cosa significa " stub" – StefanoCudini

Problemi correlati