React Native不显示异步功能错误

时间:2019-11-19 12:44:37

标签: react-native asynchronous error-handling

我在react-native和async函数中遇到一种奇怪的行为。

这是代码,它是一个简单的组件,具有通过按钮调用的异步功能:

export default class HomeScreen extends Component {
  constructor(props) {
    super(props)
  }


  async testError() {
    console.log('enter testError')
    console.log(object)
    console.log('finish testError')
  }

  render() {
    // console.log('HomeSCreen: ', this.props.navigation)
    return (

      <View style={{flex: 1}}>
        <TouchableOpacity onPress= {this.testError}>
          <Text>TEST BUTTON</Text>
        </TouchableOpacity>
      </View>

    )
  }
}

如果在Chrome控制台中按“测试”按钮,我看不到任何错误,并且脚本在“输入testError”处停止。

如果我从testError()中删除async关键字,则错误为

"node_modules\react-native\Libraries\Core\ExceptionsManager.js:76 object is not defined"

,这是正确的,因为未声明“对象”。

为什么会这样?

谢谢。

2 个答案:

答案 0 :(得分:0)

由于该函数在后台运行,因此不会记录输出,而是会给您带来未处理的承诺拒绝。

console.log(object) 对象在哪里?

答案 1 :(得分:0)

在node.js中不会发生此行为。

示例:test.js

async function testError() {
  console.log('enter testError')
  console.log(object)
  console.log('finish testError')
}

testError()

C:\Work\projects\temp>node test.js

enter testError
(node:28820) UnhandledPromiseRejectionWarning: ReferenceError: object is not defined