我试图将两个异步函数链接在一起,因为第一个函数有一个条件返回参数,导致第二个参数运行或退出模块。但是,我发现了在规格中找不到的奇怪行为。在异步函数外使用await
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
这是我的代码片段bastardized(你可以看到完整的范围here),即只检查是否已经在大堂的球员,但是这无关紧要。
接下来我们有这个异步函数。
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
该功能不需要运行,如果exit === true
。
我试图做
const inLobby = await isInLobby();
此我希望将等待到的结果,所以我可以用inLobby
有条件地运行countPlayer
,但是我收到一个类型错误,没有具体细节。
为什么你不能在await
和async
函数的函数范围之外?我知道这是一个糖的承诺,所以它必须链接到then
但为什么它在countPlayer
我可以等待另一个承诺,但在外面,我不能await
isInLobby
?
您能告诉我们您在哪里*等待了isInLobby()',以及如何使用inLobby?另外,在哪里/如何调用'countPlayer'? – Bergi
@Bergi我链接我的回购实际上下文。太多的代码放入问题 –
我没有看到问题出在哪里(也许你已经更新了回购)?如果你引用了'isInLobby()。then(... countPlayer()。then ...')部分,那么解决方案就很简单了:只需要包含这些调用的函数('(req,res)=>') 'async'。 – Bergi