Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.73.35] |
|
Сообщ.
#1
,
|
|
|
Вот есть такой простой код на промисах. Что я ожидаю? Ожидаю что при вызове промиса выведется окошко в которе если ввести число больше 9 - промис завершится успешно, и в КОНСОЛЬ НЕМЕДЛЕННО ОТПРАВИТСЯ значение, которое ввели. А затем второй раз запустится промис.
На деле же запускается промис, потом ещё раз, и только ПОСЛЕ этого выводятся сразу 2 числа. Как поправить код что бы после отрабатывания промиса он выводил число? И чего он ждёт? Они же должны сразу срабатывать и возвращать результат function serverTalk () { var myInnerServerTalk = new Promise ( function (resolve,reject) { do { var zn = prompt ('digit'); } while (isNaN(zn)) if (zn > 9) { resolve(zn); } else { reject (zn); } } ) return myInnerServerTalk; } // Запускаю цепочку serverTalk().then ( function resolve (zsn) {console.log(zsn)} ).then ( serverTalk ().then ( function resolve (zsn) {console.log(zsn)} ) ) |
Сообщ.
#2
,
|
|
|
Цитата Neznaika @ Вот есть такой простой код на промисах. Что я ожидаю? Ожидаю что при вызове промиса выведется окошко в которе если ввести число больше 9 - промис завершится успешно, и в КОНСОЛЬ НЕМЕДЛЕННО ОТПРАВИТСЯ значение, которое ввели. А затем второй раз запустится промис. На деле же запускается промис, потом ещё раз, и только ПОСЛЕ этого выводятся сразу 2 числа. Как поправить код что бы после отрабатывания промиса он выводил число? И чего он ждёт? Они же должны сразу срабатывать и возвращать результат serverTalk() .then(function resolve(zsn) { console.log(zsn); }) .then(function () { serverTalk().then(function resolve(zsn) { console.log(zsn) }); }); |
Сообщ.
#3
,
|
|
|
serverTalk() .then(function (zsn) { console.log(zsn) }) .then(serverTalk) .then(function (zsn) { console.log(zsn) }); |
Сообщ.
#4
,
|
|
|
serverTalk() .then(function (zsn) { console.log(zsn); return serverTalk(); }) .then(function (zsn) { console.log(zsn) }); |
Сообщ.
#5
,
|
|
|
ES8 style
(async function () { await serverTalk().then( zsn => console.log(zsn) ); await serverTalk().then( zsn => console.log(zsn) ); })(); genius |