为什么在JavaScript中的.then()内部的Promise会同时执行?

        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秒钟后,两者同时显示

promise2 promise1

我期望的是,三秒钟后,将首先显示promise2,然后再过三秒钟,将显示promise1,因为promise1仅应在控制台登录promise2 .then()之后执行。

liuht444 回答:为什么在JavaScript中的.then()内部的Promise会同时执行?

承诺迫切需要评估,您可以通过将它们包装在函数中来使其懒惰。

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)

本文链接:https://www.f2er.com/2783470.html

大家都在问