2012-11-13 22 views
5

Tôi hiện không nhận được bất kỳ giá trị trả về nào cho chức năng sau, mặc dù gợi ý rằng đây là cuộc gọi đồng bộ. Nếu tôi làm điều đó một cách không đồng bộ, (tức là hàm (lỗi, blah) {console.log (blah);}), tôi nhận được kết quả chính xác, dự định.Meteor.call ("function", arg) không xảy ra đồng bộ

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

Dưới đây là đoạn mã server-side cho phương pháp "get_files":

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

Ngoài ra, đây là một phần HTML đó là nhận được gọi một cách chính xác, trong trường hợp nó có liên quan:

<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

có thể giải thích thêm một chút không? có lẽ là một ví dụ ngắn. – user1821985

+0

Tôi tin rằng một chuyến đi khứ hồi client-server-client đồng bộ là không thể trong Meteor. 'Meteor.call' chỉ đồng bộ khi nó chạy trên máy chủ node.js. Các lời gọi phía máy khách của 'Meteor.call' phải sử dụng đối số' asyncCallback' để nhận kết quả từ máy chủ; các lời gọi phía máy khách của 'cuộc gọi' không đồng bộ. (Có một ngoại lệ cho điều này, nhưng trong trường hợp đặc biệt khi 'call' bị chặn liên lạc với máy chủ, và thực hiện thao tác' gọi' đồng bộ chỉ với máy khách.) – apsillers

Trả lời

2

Nếu bạn đọc nội dung của các tài liệu liên quan (http://docs.meteor.com/#meteor_call), bạn sẽ thấy rằng tài liệu có nội dung:

"Trên máy khách, nếu bạn không vượt qua gọi lại và bạn không ở trong một nhánh, cuộc gọi sẽ trả về không xác định và bạn sẽ không có cách nào để lấy giá trị trả về của phương thức"

Vì vậy, hành vi bạn đang thấy là những gì bạn nên mong đợi. Tôi nghĩ rằng các tài liệu có thể là một chút rõ ràng hơn ở đây.

+4

Tôi không hiểu ý nghĩa của nó là gì " sơ khai" – StefanoCudini

Các vấn đề liên quan