【问题标题】:Calling async function inside non-async function in React-Native - Firebase在 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 来处理此类问题。

标签: javascript reactjs firebase react-native async-await


【解决方案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

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 2020-03-09
    • 2021-02-21
    • 2022-01-25
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2019-01-20
    • 2020-12-26
    相关资源
    最近更新 更多