异步并等待Firebase的标注未等待

时间:2020-03-31 01:53:08

标签: javascript firebase react-native

我有一个类似约会的应用,我希望每次用户单击“连接”选项卡按钮时都可以查询新的匹配项。

我不确定我是否编写了不正确的await或async,但是如果用户移动得太快以至于数据库无法返回结果,则返回的匹配加载得不够快。到目前为止,我的工作是:在页面上加载到Firebase的页面上,当用户离开,然后浏览回到“连接”选项卡时,我重新调用到Firebase。 $car->vehicleinfo->urban方法是firebase的标注。

Exception with message 'Property [urban] does not exist on this collection instance.'

此外,当我尝试退订时,当用户来回导航时,侦听器似乎无法正常工作。对于我在异步调用和侦听器上做错的任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:1)

我认为您只是忘记了函数中的await关键字 总是发生在我身上啊哈哈

答案 1 :(得分:1)

我建议在getMatches()前面使用await关键字,而不要使用.then()语法。它使代码的读取更加同步,并且可以帮助防止错误。必须始终从异步函数中调用等待。不能从非异步函数中调用它。

我认为您还需要在getMatchesMethod()前面使用await;

查看本文以获取有关在useEffect()中调用异步代码的帮助 https://medium.com/javascript-in-plain-english/how-to-use-async-function-in-react-hook-useeffect-typescript-js-6204a788a435

例如:

const unsubcribe = navigation.addListener("willFocus", async () => {
    await getMatchesMethod();
});

答案 2 :(得分:0)

我发现了问题。我使用的是反应导航的V3版本,该版本已严重过时,与我的react-native版本和expo版本冲突。

我正在更新所有内容(RN> .60,EXPO sdk> 35,@ react-navigation V5),并将能够在我的getMatches()方法上使用@ react-navigation v5的侦听器。 / p>