2015-03-24 3 views
0

Как получить возврат значения асинхронным обратным вызовом на стороне клиента метеорного элемента до того, как стек продолжит выполнение? что-то вроде:Асинхронный обратный вызов стороне клиента 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

С асинхронными функциями самый простой способ сделать что-то с результатом будет делать это в самой функции обратного вызова. Так, например, в этом случае, если вы хотите, чтобы войти результат на консоль, вы должны будете сделать это:

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); 
Смежные вопросы