- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Why do I have to put async keyword to functions which have await keywords?
(1 个回答)
JS async/await - why does await need async?
(3 个回答)
Why 'await' requires 'async' in function definition
(4 个回答)
Nodejs why is await only restricted to async functions?
(3 个回答)
ES2017 - Async vs. Yield
(4 个回答)
去年关闭。
必须使用 异步 包含函数上的关键字以使用 等待在函数体内。
async function fetchMovies() {
const response = await fetch('/movies');
console.log(response);
}
fetchMovies();
等待用于在异步
完成时阻塞取() 称呼。从代码中可以看出,函数
取电影() 甚至没有返回任何值。即使这样做了,它也会影响调用者使用返回值的方式,但是为什么它对从函数体调用另一个异步调用很重要呢?
(async () => {
const response = await fetch('/movies');
console.log(response);
})();
我也知道顶级
等待在模块中得到支持。
最佳答案
async
的三个原因关键字存在:
await
不是关键字。标记函数async
提供句法“救助”以指示函数体内语言语法的重大变化。async
关键字,所有用 ECMAScript 5 或更早版本编写的程序如果使用 await
将不再工作。关键字作为变量(实际上 this was done intentionally 在某些情况下作为 async
/await
标准化之前的 polyfill),因为这会导致不添加 async
的破坏性更改到规范。正因为如此, async
在语法上是必要的,以避免破坏语言 .async
对语法严格必要。async
还对函数执行自己的转换,无论 await
是否关键字出现在正文中。function foo() {
if (Math.random() < 0.5) {
return 'return';
} else {
throw 'throw';
}
}
async function bar() {
if (Math.random() < 0.5) {
return 'return';
} else {
throw 'throw';
}
}
async
执行 function bar()
的以下转换:function bar() {
return new Promise((resolve, reject) => {
try {
resolve((/*async function bar*/() => {
if (Math.random() < 0.5) {
return 'return';
} else {
throw 'throw';
}
})());
} catch (reason) {
reject(reason);
}
});
}
熟悉 Promise 的人会认识到,我们可以简化上述内容,因为 Promise 构造函数执行器函数会在同步抛出错误时隐式拒绝:function bar() {
return new Promise((resolve) => {
if (Math.random() < 0.5) {
return resolve('return');
} else {
throw 'throw';
}
});
}
关于javascript - 为什么在 JavaScript 函数体内调用 await 需要异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66113393/
因此,我的flutter应用程序运行正常,但是我想对其进行一些更改。 我要执行的第一个更改是创建一个水平滚动窗口小部件,该窗口小部件的图像可以单击以更改工作站。 但是要做到这一点,我首先需要将两个小部
如何在 Bootstrap 模态的主体内设置 div 样式?这是我的模型: text ') .okBtn('ok') .open();">Open Model 我的CSS: @M
我有一个简单的触发器,它在 SQL Fiddle 上运行,但它不允许我将 INSERT STATEMENT 移动到触发器的主体内。 my code on sqlFiddle我只是想移动这条线 INSE
我是一名优秀的程序员,十分优秀!