Javascript 反应本机获取承诺。然后()不立即执行
我正在使用React Native为iOS和Android构建应用程序。在这里,只要点击一个按钮,我就可以从外部函数调用fetch函数。fetch函数向链接发送POST请求,并返回JSON响应(JSON是正确的,以各种方式使用Postman进行测试) 问题是.then()之后的代码不会立即执行,而是在我点击屏幕或使用导航返回或执行某种小动作之后执行。以下是我使用的代码: 从函数调用代码Javascript 反应本机获取承诺。然后()不立即执行,javascript,firebase,react-native,Javascript,Firebase,React Native,我正在使用React Native为iOS和Android构建应用程序。在这里,只要点击一个按钮,我就可以从外部函数调用fetch函数。fetch函数向链接发送POST请求,并返回JSON响应(JSON是正确的,以各种方式使用Postman进行测试) 问题是.then()之后的代码不会立即执行,而是在我点击屏幕或使用导航返回或执行某种小动作之后执行。以下是我使用的代码: 从函数调用代码 verify() { this.setState({ pressed: true });
verify() {
this.setState({
pressed: true
});
var self = this;
var theURL = "<URL>"; //Removed for question
fetch(theURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
uidOrEmail: this.state.email,
code: this.state.value
})
})
.then(res => res.json())
.then(function(data) {
console.log(data); //PROBLEM: This doesn't execute immediately
}
从UI调用函数
<Button
disabled={this.state.pressed}
onPress={this.verify}
>{!this.state.pressed ? 'Verify' : 'Verifying...'}</Button>
fetch
将返回一个Promise
对象,Promise成功后将调用then()
添加的回调。如果承诺失败,将调用由catch()
添加的回调
您可以在和中检查
fetch
和promise
文档。这是因为fetch
发出一个可能需要一些时间的HTTP调用?基于上述注释,fetch
是异步的。它不应该立即执行。这就是.then()函数的作用,不是吗?等待fetch返回某个内容然后执行它?//问题:这不会立即执行
<Button
disabled={this.state.pressed}
onPress={this.verify}
>{!this.state.pressed ? 'Verify' : 'Verifying...'}</Button>
response.status(200).send({status: 200, token: "ABC"});