Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2019, 21:27   #1
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
По умолчанию обьясните почему такой результат

чет нимагу понять
Код:
var a = 5;
setTimeout(function timeout() {
    console.log(a);
    a = 10;
}, 0);

var p = new Promise(function(resolve, reject) {
    console.log(a);
    a = 25;
    resolve();
});

p.then(function(){
    // some code
});

console.log(a);
результат :5 25 25
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Alex11223; 18.03.2019 в 22:08.
ts-alan вне форума Ответить с цитированием
Старый 18.03.2019, 21:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А что не понятно?
Промис в конструкторе выводит 5 и присваивает 25
Консоль.лог выводит 25
Срабатывает таймаут и выводится еще 25
p51x вне форума Ответить с цитированием
Старый 19.03.2019, 09:05   #3
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
По умолчанию

почему settimeout не пересетывает значение?
ts-alan вне форума Ответить с цитированием
Старый 19.03.2019, 09:22   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так сами подумайте при каком порядке выполнения кода будет такой вывод.
Или просто добавьте больше вывода
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2019, 09:25   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы мой пост читали?
Цитата:
Сообщение от p51x Посмотреть сообщение
Срабатывает таймаут и выводится еще 25
Тут и выставляет, но вы же дальше ничего не выводите.
p51x вне форума Ответить с цитированием
Старый 19.03.2019, 10:13   #6
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
По умолчанию

Цитата:
Тут и выставляет, но вы же дальше ничего не выводите.
ну я в промисе ничего не изменяю до консоль лога
ts-alan вне форума Ответить с цитированием
Старый 19.03.2019, 10:26   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от ts-alan Посмотреть сообщение
ну я в промисе ничего не изменяю до консоль лога
Промис то у тебя синхронный, он и срабатывает первым.
Код:
var a = 5;
setTimeout(function timeout() {// падает в асинхронную очередь
    console.log(a); // исполнится третьим
    a = 10;
}, 0);

var p = new Promise(function(resolve, reject) {
    console.log(a);// первый консоль лог
    a = 25;
    resolve();
});

p.then(function(){
    // some code
});

console.log(a); // второй консоль лог
// тут начнется асинхронная очередь
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 19.03.2019, 10:47   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от ts-alan Посмотреть сообщение
ну я в промисе ничего не изменяю до консоль лога
Именно поэтому у вас первое число в выводе 5
p51x вне форума Ответить с цитированием
Старый 19.03.2019, 10:56   #9
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
По умолчанию

спасибо ребята!!
ts-alan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему программа выдает такой результат? zink Общие вопросы C/C++ 3 13.02.2012 17:55
Обьясните строки такой программы NastyaV Общие вопросы C/C++ 1 24.03.2011 19:21
почему такой результат? True_girl Помощь студентам 3 17.04.2010 21:14
Почему выдаёт такой результат??? bloodeagle Помощь студентам 1 12.11.2009 08:21
Обьясните почему так... malevich Общие вопросы Delphi 5 10.02.2007 17:29