私はReact Nativeを使ってiOSとAndroid用のアプリケーションをビルドしています。ここでは、ボタンをタップすると、外部関数からfetch関数を呼び出すだけです。 fetch関数はPOST要求をリンクに送信し、JSON応答を返します(JSONは正しい、Postmanでさまざまな方法でテストされています)。Reactネイティブフェッチの約束.then()はすぐに実行されません
.ththen()の後のコードはすぐに実行されませんが、画面をタップするか、ナビゲーションを使用して戻るか、マイナーな操作を実行することが問題です。
constructor(props) {
super(props);
console.log(this.props.navigation.state.params.email);
this.state = {
email: props.navigation.state.params.email,
value: '',
pressed: false
};
this.verify = this.verify.bind(this);
}
呼び出す:私もこのようなコンストラクタでこの機能を結合してい 結合機能
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
}
FROM
呼び出しコード:ここで私が使用したコードですファンクション(UI)
<Button
disabled={this.state.pressed}
onPress={this.verify}
>{!this.state.pressed ? 'Verify' : 'Verifying...'}</Button>
要約すると、フェッチ機能はすぐに約束を解決しません。
EDIT
いくつかのより多くの情報:
フェッチリンクが実際にFirebase関数のリンクです。どのようにその関数が返している:
response.status(200).send({status: 200, token: "ABC"});
これは、 'fetch'がHTTPコールを行うのに時間がかかることがあるからです。 – Erazihel
上記のコメントを基にして、 'fetch'は非同期です。すぐには実行されません。 –
これは、.then()関数のためのものですね。フェッチが何かを返すまで待ち、それを実行しますか? – Fahmid