ES7 中新增的同步函数和异步函数的区别

ES7 中新增的同步函数和异步函数的区别

在 ES7 中,新增了 async 和 await 关键字,使得 JavaScript 中的异步编程更加简单和易于理解。但在深入理解它们之前,我们先来了解一下同步函数和异步函数的区别。

同步函数是指程序在执行该函数时,必须等待该函数执行完毕后才能继续执行下一个任务。这意味着该函数会阻塞程序的执行,直到函数返回结果或出现错误。例如:

上述代码中,我们定义了一个同步函数 syncFunction,它会在控制台输出一条消息。然后,在调用该函数之前和之后,分别输出了两条消息。由于该函数是同步的,因此在调用该函数时,程序会停止执行,直到该函数返回结果或出现错误。因此,我们会先看到 "Before syncFunction is called.",然后才会看到 "This is a synchronous function.",最后才会看到 "After syncFunction is called."。

相反,异步函数是指程序在执行该函数时,不必等待该函数执行完毕就可以继续执行下一个任务。这意味着该函数不会阻塞程序的执行,而是在后台执行。例如:

上述代码中,我们定义了一个异步函数 asyncFunction,它会在 1 秒后在控制台输出一条消息。然后,在调用该函数之前和之后,分别输出了两条消息。由于该函数是异步的,因此在调用该函数时,程序不会停止执行,而是会立即执行下一行代码。因此,我们会先看到 "Before asyncFunction is called.",然后才会看到 "After asyncFunction is called.",最后才会看到 "This is an asynchronous function."。

在 ES7 中,async 和 await 关键字使得异步编程更加简单和易于理解。async 关键字用于定义异步函数,而 await 关键字用于等待异步函数返回结果。例如:

上述代码中,我们定义了一个异步函数 fetchData,它会从指定的 URL 获取数据,并在控制台输出该数据。然后,在调用该函数之前和之后,分别输出了两条消息。由于该函数是异步的,因此在调用该函数时,程序不会停止执行,而是会立即执行下一行代码。然后,程序会等待 fetchData 函数执行完毕,并输出数据,最后才会执行下一行代码。因此,我们会先看到 "Before fetchData is called.",然后才会看到数据,最后才会看到 "After fetchData is called."。

总结

同步函数会阻塞程序的执行,直到函数返回结果或出现错误,而异步函数不会阻塞程序的执行,而是在后台执行。在 ES7 中,async 和 await 关键字使得异步编程更加简单和易于理解。async 关键字用于定义异步函数,而 await 关键字用于等待异步函数返回结果。

示例代码

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65601a36d2f5e1655da48fbd


纠错
反馈