在 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)中调用异步函数?