2012-11-13 5 views
5

Şu anda bu işlev eşzamanlı bir çağrı olduğu varsayımına rağmen, şu işlev için herhangi bir dönüş değeri alamıyorum. Zaman uyumsuz yaparsak, (yani fonksiyonu (hata, vesaire) {console.log (bla),}) Doğru amaçlanan çıktı elde edin. ,Meteor.call ("işlev", arg) eşzamanlı olarak gerçekleşmiyor

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

, burada doğru adlandırılan vurmayacak HTML parçası alakalı olduğunu durumda: İşte

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

"get_files" yöntemi için sunucu tarafı kod

<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

Biraz daha açıklamak mümkün mü? belki kısa bir örnek. – user1821985

+0

Meteor'da eşzamanlı bir istemci-sunucu-istemci gidiş gelişinin mümkün olmadığını düşünüyorum. 'Meteor.call' yalnızca node.js sunucusunda çalıştırıldığında senkronize olur. 'Meteor.call' istemcisinin çağrılması, sunucudan sonuç almak için 'asyncCallback' argümanını kullanmalıdır; "çağrı" nın istemci tarafı çağrıları senkron değildir. (Bunun bir istisnası var, fakat özel bir durumda, 'call'un sunucuyla iletişim kurması engelleniyor ve sadece istemcide senkronize bir 'call' işlemi yapıyor.) – apsillers

cevap

2

İlgili dokümanların gövdesini okursanız (http://docs.meteor.com/#meteor_call) şunu görürsünüz:

"Bir geri arama geçemiyor ve bir saplama içine değilseniz istemci üzerinde, çağrı tanımsız dönecektir ve yöntemin dönüş değeri almak için bir yol olacak"

Yani davranış Gördüğünüz şey beklediğiniz şey. Belgelerin burada biraz daha açık olabileceğini düşünüyorum.

+4

Ne demek istediğimi anlamadım. saplama" – StefanoCudini