2012-11-13 16 views
5

Ich bekomme derzeit keinen Rückgabewert für die folgende Funktion, trotz des Vorschlags, dass es sich um einen synchronen Aufruf handelt. Wenn ich es asynchron mache (d. H. Funktion (Fehler, blah) {console.log (blah);}), bekomme ich die richtige, beabsichtigte Ausgabe.Meteor.call ("function", arg) tritt nicht synchron auf

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

Hier ist der serverseitigen Code für die "get_files" Methode:

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

Auch hier ist der HTML-Teil, der richtig genannt zu werden, falls es ist relevant:

<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

ist es möglich, ein bisschen mehr zu erklären? vielleicht ein kurzes Beispiel. – user1821985

+0

Ich glaube, dass ein synchroner Client-Server-Client-Umlauf in Meteor nicht möglich ist. 'Meteor.call' ist nur dann synchron, wenn es auf dem node.js-Server ausgeführt wird. Clientseitige Aufrufe von 'Meteor.call' müssen das' asyncCallback'-Argument verwenden, um Ergebnisse vom Server zu erhalten; clientseitige Aufrufe von "call" sind nicht synchron. (Es gibt eine Ausnahme, aber es ist in einem speziellen Fall, in dem "Anruf" von der Kontaktaufnahme mit dem Server überhaupt blockiert wird, und eine synchrone Call-Operation nur für den Client durchführt.) – apsillers

Antwort

2

Wenn Sie den Text der relevanten Dokumente lesen (http://docs.meteor.com/#meteor_call), sehen Sie Folgendes:

„wenn Sie auf dem Client nicht einen Rückruf übergeben und Sie sind nicht in einem Stummel, wird Anruf nicht definiert zurückkehren, und Sie werden keine Möglichkeit haben, auf den Rückgabewert des Verfahrens zu erhalten“

So ist das Verhalten Sie sehen, was Sie erwarten sollten. Ich denke, die Dokumente könnten hier ein wenig klarer sein.

+4

Ich habe nicht verstanden, was für " Stub " – StefanoCudini

Verwandte Themen