私は、ログインが成功したかどうかに応じて警告を表示するログイン機能を持っています。まず第一に、私は変数を宣言し、フェッチを行った後、結果に依存して変数に値を与えます。フェッチ外の変数を取得する
フェッチが完了した後、この値に応じてアラートを表示します。 私の問題は、値がフェッチ後に定義されていないということです。
これは私のコードです。
onLogin(){
var a;
fetch('http://xxxxx/user/login', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
username: this.username,
password: this.password
})
})
.then(function(response){
if (response.status === 404){
response.text().then(function(object){
var a = "NO";
})
} else if (response.status === 200){
response.text().then(function(object){
var a = "OK";
})}
})
if (a == "OK"){
Alert.alert(
'Acceso',
'a',
[{
text: 'Aceptar',
onPress: (this.aceptar.bind(this))
},
{
text: 'Cancelar',
onPress: (this.cancelar.bind(this))
}]
)}
else if (a == "NO"{
//something
}
}
fetchは非同期です。フェッチコールからの応答を受け取る前にアラートを表示しています。フェッチの結果に依存するコードは、フェッチの最後に '.then'の一部である必要があります。 – CRice