На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
  
> Промис
    Вот есть такой простой код на промисах. Что я ожидаю? Ожидаю что при вызове промиса выведется окошко в которе если ввести число больше 9 - промис завершится успешно, и в КОНСОЛЬ НЕМЕДЛЕННО ОТПРАВИТСЯ значение, которое ввели. А затем второй раз запустится промис.

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

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

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

    ExpandedWrap disabled
      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)} )
        )
      Цитата Neznaika @
      Вот есть такой простой код на промисах. Что я ожидаю? Ожидаю что при вызове промиса выведется окошко в которе если ввести число больше 9 - промис завершится успешно, и в КОНСОЛЬ НЕМЕДЛЕННО ОТПРАВИТСЯ значение, которое ввели. А затем второй раз запустится промис.

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

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

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

      :D
      ExpandedWrap disabled
        serverTalk()
          .then(function resolve(zsn) {
            console.log(zsn);
          })
          .then(function () {
            serverTalk().then(function resolve(zsn) {
              console.log(zsn)
            });
          });
        :D
        ExpandedWrap disabled
          serverTalk()
            .then(function (zsn) {
              console.log(zsn)
            })
            .then(serverTalk)
            .then(function (zsn) {
              console.log(zsn)
            });
          :D
          ExpandedWrap disabled
            serverTalk()
              .then(function (zsn) {
                console.log(zsn);
                return serverTalk();
              })
              .then(function (zsn) {
                console.log(zsn)
              });
            ES8 style
            ExpandedWrap disabled
              (async function () {
                await serverTalk().then(
                  zsn => console.log(zsn)
                );
               
                await serverTalk().then(
                  zsn => console.log(zsn)
                );
              })();


            genius :lool:
            Сообщение отредактировано: Cfon -
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0214 ]   [ 15 queries used ]   [ Generated: 28.03.24, 16:40 GMT ]