如何在 JavaScript 中创建异步任务

How to create asynchronous tasks in JavaScript

如何执行这样的异步任务:

我想有两个任务:一个在 1 秒后打印“foo”,另一个在 2 秒后打印“bar”。 我希望它们同时启动,并且 运行 异步启动。

这是 python 中的一个示例:

async def main():
    task1 = asyncio.create_task(
        say_after(1, 'hello'))

    task2 = asyncio.create_task(
        say_after(2, 'world'))

    print(f"started at {time.strftime('%X')}")

    # Wait until both tasks are completed (should take
    # around 2 seconds.)
    await task1
    await task2

    print(f"finished at {time.strftime('%X')}")

如何在 JavaScript 中执行此类操作?我使用承诺吗?我不知道他们是如何工作的。我是 javascript

的“新手”

嗨!

你可以这样做:

async function hello() {
  setTimeout(() => {}, 1000)
  console.log("hello")
}

async function world() {
  setTimeout(() => {}, 2000)
  console.log("world")
}

async function main() {
  await hello()
  await world()
}

main()

让我知道这是否适合你!

好的,我明白了:

async function foo() {
    return setTimeout(() => {
          console.log("foo")
        }, 1000);
}

async function bar() {
    return setTimeout(() => {
          console.log("bar")
        }, 1500);
}   

foo()
bar()

您可以使用 then js promises 方法。

function timeout(time_ms) {
  return new Promise(resolve => setTimeout(resolve, time_ms));
}


function main() {
  timeout(1000).then(() => console.log("hello"))
  timeout(2000).then(() => console.log("world"))

  var d = new Date();
  var n = d.toLocaleTimeString();
  console.log(`started at ${n}`)

}

main()

如果你想擅长JavaScript,我强烈建议你不要使用async but Promise

Promise是一个具有很强代数结构的表达式,而async-await则是规则复杂的语句。