我想知道:为什么我们必须添加单词:'async'声明到调用sync函数的函数中? 不应该声明为'sync'吗?
抱歉,我不熟悉“async/await”,也许这只是其他人的基本 javascipt 语法问题。
下面的代码运行良好:首先输出‘I will output FIRST Even I am in BEHIND’;然后,函数'add()'将在2秒后输出'3',5秒后输出'4',7秒后输出'5',然后总和立即为12...
但我想知道为什么我们必须向函数“add()”添加一个 'async' 声明?这是为了强调,函数本身是一个异步函数,放在一段JavaScript中,它可以异步执行(但其内部执行是同步)?**
如果我要编写一段JavaScript段代码所有代码都是同步执行的,我是否必须将所有代码放入声明为异步的函数中(如下所示
'const add = async function'
)?并且不要使用任何其他语句外部(删除代码行:console.log('I will output FIRST Even I am in BEHIND')
)?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>async</title>
</head>
<body>
<script type="text/javascript">
const asy = function (x, time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(x)
}, time)
})
}
const add = async function () {
const a = await asy(3, 2000)
console.log(a)
const b = await asy(4, 5000)
console.log(b)
const c = await asy(5, 7000)
console.log(c)
const d = a + b + c
console.log(d)
}
add();
console.log('I will output FIRST Even I am in BEHIND')
</script>
</body>
</html>
您不需要将所有代码放在一个函数中!
函数应该只执行分配给它的一项任务并返回一个值。 因此,异步任务应该放在单独的函数中。
JavaScript 本身不是异步的,async/await 关键字只是告诉解释器稍后会获得这段代码的结果。 (阅读有关事件循环的内容)。
如果调用异步函数而不使用await,代码将继续执行,而不等待其完成。 Await 告诉解释器等待这个函数完成