我想对此进行澄清。假设我有两个功能。一种是异步功能。如果要在另一个函数中调用该异步函数,该函数调用是否需要await关键字,因此另一个函数也必须也是一个异步函数?
这就是我如何处理此问题的心态。因此,我之前没有抛出任何错误。
答案 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将不起作用。