Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

чет нимагу понять
Код:

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 в 23:08.
ts-alan вне форума   Ответить с цитированием
Старый 18.03.2019, 22:52   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,277
Репутация: 2465
По умолчанию

А что не понятно?
Промис в конструкторе выводит 5 и присваивает 25
Консоль.лог выводит 25
Срабатывает таймаут и выводится еще 25
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 19.03.2019, 10:05   #3
ts-alan
Участник клуба
 
Регистрация: 07.07.2010
Сообщений: 737
Репутация: 38
По умолчанию

почему settimeout не пересетывает значение?
ts-alan вне форума   Ответить с цитированием
Старый 19.03.2019, 10:22   #4
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,582
Репутация: 3570

icq: 512-765
skype: alexp.frl
По умолчанию

Ну так сами подумайте при каком порядке выполнения кода будет такой вывод.
Или просто добавьте больше вывода
Alex11223 вне форума   Ответить с цитированием
Старый 19.03.2019, 10:25   #5
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,277
Репутация: 2465
По умолчанию

Вы мой пост читали?
Цитата:
Сообщение от p51x Посмотреть сообщение
Срабатывает таймаут и выводится еще 25
Тут и выставляет, но вы же дальше ничего не выводите.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 19.03.2019, 11:13   #6
ts-alan
Участник клуба
 
Регистрация: 07.07.2010
Сообщений: 737
Репутация: 38
По умолчанию

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

Цитата:
Сообщение от 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); // второй консоль лог
// тут начнется асинхронная очередь

__________________
Работаю. В этот раз за деньги.
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 19.03.2019, 11:47   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,277
Репутация: 2465
По умолчанию

Цитата:
Сообщение от ts-alan Посмотреть сообщение
ну я в промисе ничего не изменяю до консоль лога
Именно поэтому у вас первое число в выводе 5
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 19.03.2019, 11:56   #9
ts-alan
Участник клуба
 
Регистрация: 07.07.2010
Сообщений: 737
Репутация: 38
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


06:16.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru