我在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"
,这是正确的,因为未声明“对象”。
为什么会这样?
谢谢。
答案 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