Промис

Тема в разделе "JavaScript", создана пользователем dirdir, 16 июн 2018.

Модераторы: ZiX
  1. dirdir

    dirdir Постоялец

    Регистр.:
    19 мар 2012
    Сообщения:
    103
    Симпатии:
    12
    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 числа.

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

    И чего он ждёт? Они же должны сразу срабатывать и возвращать результат
     
  2. dimpa91

    dimpa91 Писатель

    Регистр.:
    6 дек 2015
    Сообщения:
    4
    Симпатии:
    3
    Код:
    serverTalk().then (
    zsn => {
      console.log(zsn);
      return zsn;
    }).then (
    zsn => {
      return serverTalk ();
    }).then (
    zsn=> {
      console.log(zsn);
    });
    следущий then запустится через время если в нем передать ПРОМИС, а не значение или ничего.