首页 > 解决方案 > 为什么第一个等待会被忽略?

问题描述

我想先将身体背景颜色更改为红色,然后再更改为蓝色。但它正在跳过红色。从 Colt Steele 的 The Web Developer Bootcamp 获得。

function changeBG(color, delay) {
  setTimeout(() => {
    document.body.style.backgroundColor = color;
  }, delay);
}

async function init() {
  await changeBG('red', 1000);
  await changeBG('blue', 1000);
}

init();
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <script src="script.js"></script>
  </body>
</html>

标签: javascript

解决方案


你不是PromisechangeBG. 以下将起作用:-

function changeBG(color, delay) {
return new Promise(resolve=>{
  setTimeout(() => {
    document.body.style.backgroundColor = color;
    resolve();
  }, delay);
})

}

async function init() {
  await changeBG('red', 1000);
  await changeBG('blue', 1000);
}

init();
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <script src="script.js"></script>
  </body>
</html>


推荐阅读