Jac*_*ava 0 javascript asynchronous function
我对 Javascript 还很陌生,正在写这篇文章,所以如果我有任何错误,请纠正我。
据我所知,异步函数允许其他进程在后台运行,然后在函数完成后,它返回一个可以解决或拒绝的承诺。此外,由于异步函数中的进程不按设定顺序运行,我们可以使用 await 关键字停止执行,直到进程完成。
然而,让我感到困惑的是代码执行之间的差异
function f1() {
//do stuff
}
function f2() {
//do stuff
}
function f3() {
//do stuff
}
async function asyncFunc() {
f1()
f2()
f3()
}
asyncFunc()
Run Code Online (Sandbox Code Playgroud)
和这个:
async function asyncf1() {
//do stuff
}
async function asyncf2() {
//do stuff
}
async function asyncf3() {
//do stuff
}
function f() {
asyncf1()
asyncf2()
asyncf3()
}
f()
Run Code Online (Sandbox Code Playgroud)
????? (除了第一个例子返回一个承诺的明显事实)
在同步函数中调用异步函数与在异步函数中调用同步函数是否相同?它们都产生相同的输出吗?如果是这样,哪一个比另一个更受欢迎?
要理解的关键是async函数是使用promises 的语法糖。无论是async功能还是承诺让在后台发生任何事。它们让您等待并响应后台已经发生的事情(例如计时器或 HTTP 操作完成)。
一个async函数在第一个或之前是同步的。(这样它就可以启动它然后等待的任何异步进程。)在这一点上,它返回一个承诺,该承诺将被履行或拒绝,具体取决于正在执行的承诺和/或您返回的内容。awaitreturnawait
await暂停函数的逻辑,直到/除非被awaited的承诺解决。(如果您使用await valuewhere valueis not athenable [a promise-like thing],那么您实际上是在做await Promise.resolve(value)。)
您还没有显示asyncFuncX函数的任何内容,但除非它们有await什么,否则它们是完全同步的。
您可能会发现我几天前的回答也很有用。
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |