儘管建議這是一個同步調用,但我目前沒有獲得以下函數的任何返回值。如果我異步執行它(即function(error,blah){console.log(blah);}),我會得到正確的預期輸出。Meteor.call(「函數」,arg)不同步發生
Template.file_nav.files = function(path) {
path = path || "/";
var x = Meteor.call('get_files', path);
return x;
}
這裏的 「get_files」 的方法在服務器端代碼:
Meteor.methods({
get_files : function get_files(path) {
return [
{ "name" : " bob" }, { "name" : "alice" },
];
}
而且,這裏是一個的得到正確調用HTML部分,如果它是相關的:
<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>
是否可以解釋一點?也許是一個簡短的例子 – user1821985
我相信在Meteor中同步客戶端 - 服務器 - 客戶端往返是不可能的。 'Meteor.call'只在node.js服務器上運行時纔是同步的。 'Meteor.call'的客戶端調用必須使用'asyncCallback'參數從服務器獲取結果; 'call'客戶端調用不同步。 (有一個例外,但在特殊情況下,'call'被阻止與服務器聯繫,並且僅進行客戶端同步調用操作。) – apsillers