Получить объект из closure
this.getEvent = function()
{
$.post('getEvent', {}, function(response)
{
// response
}, 'json');
// Как тут получить response?
}
Ну или как написать правильнее? Использовать глобальные переменные я не хочу, писать нужный код прямо в этот callback я вроде не могу: я теряю возможность обращаться к методам/свойствам текущего объекта. |
вот ваш код пояснением:
this.getEvent = function()
{
$.post('getEvent', {}, function(response)
{
// response
// этот код выполнится ПЗЖЕ нижеследующего кода
}, 'json');
// Как тут получить response?
// а никак. потому что этот код выоплнится РАНЬШЕ, чем код в колбеке
}
а вот, для того чтобы не потерять текущий контекст(не терять возможность обращаться к методам/свойствам текущего объекта) надо писать зАмкание:
this.getEvent = function()
{
var _this = this;
(function(){
$.post('getEvent', {}, function(response)
{
// response
// Как тут получить response?
//а он тут доступен. как и _this
}, 'json');
})();
}
|
Почему код в callback выполнится позже? Там какой-то setTimeout?
Так можно, да, только чё-то уродливо выглядит. |
Функция callback выполняется по факту получения какого либо ответа.
|
Цитата:
|
Цитата:
|
Цитата:
|
Okay, спасибо.
P.S. Я имел в виду, что JS же однопоточный язык, я думал, что и с запросами так же. Получается, что сам запрос выполняется в отдельном потоке. P.P.S. А, я кажется понял разницу асинхронного/синхронного запросов. |
BTW, более удобный способ представлен тут: http://habrahabr.ru/blogs/javascript/103760/ через apply и Function.prototype.
|
| Часовой пояс GMT +3, время: 21:53. |