Промис

dirdir

Постоялец
Регистрация
19 Мар 2012
Сообщения
112
Реакции
16
HTML:
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)} )
  )


Вот есть такой простой код на промисах. Что я ожидаю? Ожидаю что при вызове промиса выведется окошко в которе если ввести число больше 9 - промис завершится успешно, и в КОНСОЛЬ НЕМЕДЛЕННО ОТПРАВИТСЯ значение, которое ввели. А затем второй раз запустится промис.

На деле же запускается промис, потом ещё раз, и только ПОСЛЕ этого выводятся сразу 2 числа.

Как поправить код что бы после отрабатывания промиса он выводил число?

И чего он ждёт? Они же должны сразу срабатывать и возвращать результат
 
Код:
serverTalk().then (
zsn => {
  console.log(zsn);
  return zsn;
}).then (
zsn => {
  return serverTalk ();
}).then (
zsn=> {
  console.log(zsn);
});

следущий then запустится через время если в нем передать ПРОМИС, а не значение или ничего.
 
Назад
Сверху