2017-08-08 72 views
0

在这里,我正在调用该方法来获取异步方法中的QuickBlox结果。虽然我打印控制台中的值我可以得到它,但应用程序继续加载不返回结果。Meteor.js Aysnc没有返回结果继续加载

服务器端:

Meteor.methods({ 
    allquickbloxusers_Methods: function(){ 
    var params = {login: ["99999"]}; 

    var asyncCall = QB1.users.get(params, Meteor.bindEnvironment(function(err, QBuser) { 
     if(QBuser) { 
      return QBuser; 
      } else { 
       return err; 
      }  
     })); 

    var syncCall = Meteor.wrapAsync(asyncCall); 
    var res = syncCall(); 

    // now you can return the result to client. 
    return res; 
    } 
}); 

回答

0

要使用你想Meteor.wrapAsync通过它的实际功能,而不是调用函数的结果。像这样:

Meteor.methods({ 
    allquickbloxusers_Methods: function(){ 
    var params = {login: ["99999"]}; 

    var syncCall = Meteor.wrapAsync(QB1.users.get) 

    var res = syncCall(params); 

    // now you can return the result to client. 
    return res; 
    } 
}); 

基本上wrapAsync让你回来,你与原函数的参数调用一个新的功能。

知道了这一点,你可以使功能更加简洁:

Meteor.methods({ 
    allquickbloxusers_Methods: function(){ 
    var params = {login: ["99999"]}; 

    return Meteor.wrapAsync(QB1.users.get)(params) 
    } 
});