如何在Java中嵌套promise并在不同的时间解决它们?

问题描述

我认为,通过运行数字1、2和4下面的代码,可以在1秒钟之内将它们显示在屏幕上。但是它们同时出现。

由于我的嵌套解析位于setTimeout()内,难道不应该在前一个解析之后一秒钟解析它们吗?

var test = document.getElementById("test");

new Promise(function(resolve,reject) {
  setTimeout(() => resolve(1),1000);
}).then(result => {
  test.innerHTML += result + "<br>";
  return new Promise(function(resolve,reject) {
    setTimeout(() => resolve(result * 2,2000));
  });
}).then(result => {
  test.innerHTML += result + "<br>";
  return new Promise(function(resolve,3000));
  });
}).then(result => {
  test.innerHTML += result;
});

解决方法

为setTimeout正确传递第二个参数

new Promise(function(resolve,reject) {
  setTimeout(() => resolve(1),1000);
}).then(result => {
  console.log(result)
  return new Promise(function(resolve,reject) {
    setTimeout(() => resolve(result * 2),2000);
  });
}).then(result => {
 console.log(result)
  return new Promise(function(resolve,3000);
  });
}).then(result => {
  console.log(result)
});