【问题标题】:Why is 'await' necessary for javascript? [duplicate]为什么 JavaScript 需要“等待”? [复制]
【发布时间】:2021-10-04 15:05:58
【问题描述】:

我的理解是 javascript 是单线程的,这意味着它一次只会执行一行。

对于下面的代码,为什么需要'await'?我认为它仍然会在移动到下一行之前执行 fetch:

const res = await fetch('http://testurl.com');

有人可以解释 await 在单线程语言中的重要性吗?

谢谢

【问题讨论】:

  • js确实是单线程的,但也可以是异步的
  • 也许太挑剔了,但是:将其视为“一次一行”执行是不对的。那么console.log( \n " foo" \n);\n 代表换行符)呢? console.log( 不会在 "foo" 之前执行,等等。在评估代码之前,它会被解析为其他表示语句和表达式的表示。这些是一个接一个地执行的。

标签: javascript asynchronous async-await


【解决方案1】:

两种类型的功能都可以在功能中“暂停”,

  • 异步函数
  • 生成器函数

所以虽然你是对的,但一次只会执行 1 行,await 基本上告诉 Javascript:

这个函数现在被暂停,一旦这个 promise 解决,这个函数就会恢复。

当函数暂停时,其他代码可以运行。但是“只有 1 行代码会运行”的规则仍然成立。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多