我有以下代码
async _onPress() {
NetInfo.isConnected.fetch().then(isConnected => {
if (isConnected) {
fetch(apiURL + '/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: this.props.username,
password: this.props.password
})
})
.then((response) => response.json())
.then((responseJson) => {
if (responseJson.status === 'success')
//I am getting error here
await AsyncStorage.setItem('token', responseJson.token);
//moving on to the main screen if server return success
Actions.MainScreen();
} else {
Toast.show({
text: "Wrong username or password!",
type: "danger"
});
}
})
.catch((error) => {
console.log(error);
});
} else {
Toast.show({
text: "Please Connect To Internet",
type: "danger"
});
}
});
}
我正在尝试使用AsyncStorage保存我从API服务器收到的令牌。我收到以下错误
Expression statement is not assignmentor call
和RefrenceError:await is not defined
当我尝试在该位置使用await时。
但是当在函数开头使用相同的代码时,我没有错误。
我不知道出了什么问题。在异步等待中是不允许的?我对这些并不太熟悉。
答案 0 :(得分:0)
如果_onPress
调用某些异步函数并且您希望等待所有这些函数完成,则必须在每个函数前面放置一个“await”。此外,每个异步函数(包括异步回调函数)也必须声明为async
。
完整的代码:
async _onPress() {
**await** NetInfo.isConnected.fetch().then(**async** (isConnected) => {
if (isConnected) {
**await** fetch(apiURL + '/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: this.props.username,
password: this.props.password
})
})
.then((response) => response.json())
.then(**async** (responseJson) => {
if (responseJson.status === 'success') {
**await** AsyncStorage.setItem('token', responseJson.token);
Actions.MainScreen();
} else {
Toast.show({
text: "Wrong username or password!",
type: "danger"
});
}
})
}
})
}