流星客户端异步回调

时间:2015-03-24 01:31:27

标签: javascript meteor

如何在堆栈继续执行之前通过异步回调在meteor的客户端获取返回值?类似的东西:

var result=function(str){
      Meteor.call("getSearch",str,function(err,res){
    if (err)
      throw new Error(err.message);
    else 
      return res
      });
    };

    var final=result(text);
    console.log(final);

如何在打印之前获取final的值?感谢。

1 个答案:

答案 0 :(得分:1)

使用异步函数,对结果执行某些操作的最简单方法是在回调函数本身中执行此操作。例如,在这种情况下,如果要将结果记录到控制台,则必须执行此操作:

var result=function(str){
  Meteor.call("getSearch",str,function(err,res){
    if (err)
      throw new Error(err.message);
    else 
     console.log(res); // rather than returning
  });
};

result(text);

更一般地说,如果你有一个复杂的函数想要运行返回值,你也可以调用它:

var my_totally_complicated_fn = function(arg) { 
  ... // do a bunch of stuff
}

var result=function(str){
  Meteor.call("getSearch",str,function(err,res){
    if (err)
      throw new Error(err.message);
    else 
     my_totally_complicated_fn(res); 
  });
};

result(text);