Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2018, 13:53
Аспирант
Отправить личное сообщение для Kaha Посмотреть профиль Найти все сообщения от Kaha
 
Регистрация: 10.11.2015
Сообщений: 31

return в ajax
Добрый день! Понимаю, что тема изъезжена вдоль и поперек, но не могу победить return в $.ajax

Делаю так (пытаюсь через область видимости):
window.onload = function() {
   var callback = 0;
   
   var data2 = "data=bugoga";
   $.ajax({ 
    	type: "POST",
	    url: "./test.php",
	    data: data2
    }).done(function(data){
		callback = 1;
    });

   alert(callback);
}


алертом выводится 0, а нужно, чтобы 1))
Подскажите, пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 22.04.2018, 14:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

"Ок, Гугл, что такое асинхронность в JavaScript?"
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2018, 21:41
Аспирант
Отправить личное сообщение для Kaha Посмотреть профиль Найти все сообщения от Kaha
 
Регистрация: 10.11.2015
Сообщений: 31

Разобрался с асинхронностью, узнал про WebApis, Stack. Верно ли я понимаю, что операции выполняются следующим образом:
1)
var callback = 0;

2)
$.ajax({})
улетел в WebApis, потом в очередь задач (task's queue), потом event loop запулил его в stack
3)
alert(callback);
//вывелся коллбэк, который собственной и не изменялся, как был 0 так 0 и остался.
4) После Того как Event Loop выпнул из очереди задач фидбэк ajax запроса, он выполнится:
.done(function(data){
        callback = 1;
    });
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2018, 21:43
Аспирант
Отправить личное сообщение для Kaha Посмотреть профиль Найти все сообщения от Kaha
 
Регистрация: 10.11.2015
Сообщений: 31

Только после этого callback станет равным 1, я верно понимаю алгоритм работы?
Ответить с цитированием
  #5 (permalink)  
Старый 22.04.2018, 22:12
Аспирант
Отправить личное сообщение для Kaha Посмотреть профиль Найти все сообщения от Kaha
 
Регистрация: 10.11.2015
Сообщений: 31

с return то что делать?)
Ответить с цитированием
  #6 (permalink)  
Старый 22.04.2018, 22:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Kaha,

а нельзя как-то так?

.done(function(data){ 
       fn(1); 
   });
Ответить с цитированием
  #7 (permalink)  
Старый 22.04.2018, 23:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Kaha
улетел в WebApis
А проще и без полтергейста представить нельзя? Считайте, что и $.ajax, и alert запущены одновременно, и никого из них не обязывают ожидать другого. При этом кто из них завершит работу быстрее? Returt что-то решить в этом случае?

Либо выполняйте нужное по ответу $.ajax в его методе, либо promise (что по сути тоже, что и первое), либо в особо тяжких случае, если в этом соль, следите за изменениями DOM.
Ответить с цитированием
  #8 (permalink)  
Старый 22.04.2018, 23:11
Аспирант
Отправить личное сообщение для Kaha Посмотреть профиль Найти все сообщения от Kaha
 
Регистрация: 10.11.2015
Сообщений: 31

Сообщение от laimas Посмотреть сообщение
Либо выполняйте нужное по ответу $.ajax в его методе...
Так я бы с радостью... но не работает же...
Ответить с цитированием
  #9 (permalink)  
Старый 22.04.2018, 23:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Kaha
Так я бы с радостью... но не работает же...
А что именно?
Ответить с цитированием
  #10 (permalink)  
Старый 22.04.2018, 23:22
Аспирант
Отправить личное сообщение для Kaha Посмотреть профиль Найти все сообщения от Kaha
 
Регистрация: 10.11.2015
Сообщений: 31

я хочу, чтобы callback поменялся с 0 на 1 в функции
.done(function(data){
       callback=1;
   });

Эксперты, подскажите, где я не прав, где не догоняю? Мне нужно получить результат в теле фидбэка
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
d3.js изменение шаблона под свои данные isantel Библиотеки/Тулкиты/Фреймворки 1 01.11.2015 23:08
что делают функции Panwo Общие вопросы Javascript 2 21.10.2015 20:37
сортировка sort qwermjk Общие вопросы Javascript 8 31.01.2013 18:45
AJAX return result Nightmare jQuery 4 14.09.2011 13:50
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24