Почему Promise внутри .then () в javascript выполняется одновременно? - PullRequest
0 голосов
/ 12 января 2020
        const promise1 = new Promise(function(resolve, reject) {
          setTimeout(function() {
            resolve('promise1');
          }, 3000);
        });

        const promise2 = new Promise(function(resolve, reject) {
          setTimeout(function() {
            resolve('promise2');
          }, 3000);
        });

        promise2.then(function(value) {
          console.log(value);
          promise1.then(function(value) {
              console.log(value);
            });
        });

выход: * через 3 секунды оба дисплея одновременно еще через 3 секунды будет отображаться обещание 1, поскольку обещание 1 должно выполняться только после входа в консоль обещания 2 .then ().

1 Ответ

0 голосов
/ 19 января 2020

Обещания жаждут оценки, вы можете сделать их ленивыми, заключив их в функцию.

const promise1 = () => new Promise(function(resolve, reject) {
          setTimeout(function() {
            resolve('promise1');
          }, 3000);
        });
        
const promise2 = () => new Promise(function(resolve, reject) {
          setTimeout(function() {
            resolve('promise2');
          }, 3000);
        });

promise2()
    .then(console.log)
    .then(() => promise1())
    .then(console.log)
...