为什么我们必须在调用同步 javascript 函数的 javascript 函数中添加一个“异步”声明词?

问题描述 投票:0回答:1

我想知道:为什么我们必须添加单词:'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 asynchronous async-await synchronization
1个回答
0
投票

您不需要将所有代码放在一个函数中!

函数应该只执行分配给它的一项任务并返回一个值。 因此,异步任务应该放在单独的函数中。

JavaScript 本身不是异步的,async/await 关键字只是告诉解释器稍后会获得这段代码的结果。 (阅读有关事件循环的内容)。

如果调用异步函数而不使用await,代码将继续执行,而不等待其完成。 Await 告诉解释器等待这个函数完成

© www.soinside.com 2019 - 2024. All rights reserved.