在 React-Native 中的非异步函数中调用异步函数 - Firebase

Posted

技术标签:

【中文标题】在 React-Native 中的非异步函数中调用异步函数 - Firebase【英文标题】:Calling async function inside non-async function in React-Native - Firebase 【发布时间】:2017-08-13 22:22:57 【问题描述】:

这就是我在 React-Native 中尝试做的事情。异步函数正在调用 firebase。

async functionOne() 
    asyncStuffHappens


functionTwo() 
    this.functionOne();

this.functionOne(); 未定义。我不确定如何从另一个函数调用异步函数。

【问题讨论】:

这两个函数在哪里?在组件内部?这应该绑定什么? 这存在于组件中。正在从 TouchableOpacity 的 onPress 事件处理程序调用 functionTwo。当我在 onPress 中调用函数时,我通过正确绑定 this 解决了我的问题。在这种情况下不需要 IFFE。 在构造函数中绑定无疑是最好的,但仅供参考,您也可以使用arrow function 来处理此类问题。 【参考方案1】:

像这样:

async functionOne() 
    asyncStuffHappens


functionTwo() 
    (async () => 
        await this.functionOne();
    )();

这称为IIFE (Immediately-invoked function expression)。这是一个在创建后立即执行的函数

【讨论】:

这里完全没有必要,因为从不使用返回值。 this.functionOne() 就是你所需要的。 提供的代码并未显示所有内容。我猜测可能会返回一个值,或者在异步操作之后需要执行另一个操作。否则,他/她不会问这个问题。 那么这可能是也可能不是一个好的解决方案。通常不需要 IIAFE。 你是对的,在这种情况下不需要 IFEE【参考方案2】:

就像@lonesomeday 所说,this.functionOne() 就是我所需要的。我的问题是我没有在我调用它的 TouchableOpacity 的 onPress 中正确绑定 this

【讨论】:

以上是关于在 React-Native 中的非异步函数中调用异步函数 - Firebase的主要内容,如果未能解决你的问题,请参考以下文章

在 utils.js 文件(React-Native)中调用异步函数?

Java中的非阻塞异步IO

异步 API 调用,Redux React-Native

react-native async 函数返回 promise 但不返回我的 json 数据?

从异步函数 react-native 获取未定义

从异步函数react-native获取未定义