Давайте расширим этот пример:
request = prepare_request();
send_request(request,function(response) {
display(response);
});
function send_request(request, callback) {
// do stuff here to obtain a response
callback(response); //execute the callback passing the response
}
Как видите, нет необходимости в условном выражении. Кроме того, ответ не был создан при определении обратного вызова, но обратный вызов знает, что делать, когда он станет доступен, это все равно, что сказать «эй, как только foo
прибудет, сделай то и это».
Наконец, к вашему первому вопросу, я думаю, у вас есть проблемы с просмотром обратного вызова как анонимной функции. Это не должно быть так, это также можно сделать:
var callback = function(response) {
display(response);
}
send_request(request, callback);
или
function callback(response){
display(response);
}
send_request(request, callback);