2017-08-08 55 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) 
    } 
});