使同步JavaScript在继续之前等待[关闭]

6ie5vjzr  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(121)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

昨天关门了。
社区正在审查是否从昨天开始重新讨论这个问题。
Improve this question
我正在尝试学习如何让同步代码按照我的意愿工作。鉴于我有以下代码示例:

console.log('1')

setTimeout(() => {
    console.log('2')
}, 3000)

setTimeout(() => {
    console.log('3')
}, 2000)

console.log('4')

预期产出为:

1
4
3
2

我该怎么做才能使输出按升序排列?我想确保console.log('4')在执行之前等待其他代码。

muk1a3rh

muk1a3rh1#

在现代JavaScript中,等待任何异步函数的最佳方法是使用promises。在您的情况下,您可以创建一个async IIFE并用途:

(async function() {
  console.log('1')

  await new Promise(res => setTimeout(() => {
      console.log('2');
      res();
  }, 3000));

  await new Promise(res => setTimeout(() => {
      console.log('3');
      res();
  }, 2000));

  console.log('4')
})();

相关问题