在另一个函数中调用异步函数是否也会使另一个函数异步?

时间:2020-09-03 21:09:48

标签: javascript async-await

我想对此进行澄清。假设我有两个功能。一种是异步功能。如果要在另一个函数中调用该异步函数,该函数调用是否需要await关键字,因此另一个函数也必须也是一个异步函数?

这就是我如何处理此问题的心态。因此,我之前没有抛出任何错误。

3 个答案:

答案 0 :(得分:3)

该函数调用是否需要await关键字,因此另一个函数也必须也是一个async function吗?

不。 async function只是一个始终返回承诺的函数,实际上与从外部返回承诺的普通function几乎没有区别。

await关键字不是放置它之前的函数调用的修饰符。它只是在等待调用返回的Promise value ,这适用于任何其他表达式。您也可以像const promise = someFunction(); const result = await promise;一样将其分开。

答案 1 :(得分:2)

使用async关键字的函数:

  • 将返回一个承诺,将其还原为return s的值
  • 支持await关键字,它将使其进入睡眠状态,直到await关键字右侧的承诺解决为止

所以给定了:

function async foo() {
    return 27;
}

function bar() {
    const return_value = foo();
}

foo();

foo将返回一个承诺,该承诺将解析为27

return_value变量将是promise的值。

除非您想将bar更改为以下关键字,否则无需使用async关键字:

const return_value = await foo();

…,以便bar可以入睡,直到foo返回的诺言化为27(在这种情况下,return_value将是27而不是是一个承诺)。

答案 2 :(得分:0)

您的调用asynch函数的函数不会因为正常的计算而通过该asynch。只要等待发出应答,只有等待发出应答的部分才会进入睡眠状态。

否则,孔编程将停止并仅在您的asynch-answer上等待,并且由此asynch将不起作用。