Получить объект из 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, время: 05:54. |