我在android模拟器中使用asyncStorage并进行测试。以下是代码。
postData() {
this.setData();
const address = this.getData();
fetch('https://url/post/data',{
'method' : 'POST',
'body':JSON.stringify({
param1:"123",
param2: "121",
param3: "122",
city: address
})
})
.then((response) => response.json())
.then((responseJson) => {
this.props.navigation.navigate('Complete')
})
.catch((error) =>{
console.error(error);
});
}
setData() {
const city = 'bangalore';
AsyncStorage.setItem('address', city)
.then(json => console.log('success!'))
.catch(error => console.log('error!'));
}
getData() {
return AsyncStorage.getItem('address');
}
在服务器POST(我正在使用PHP)上,我收到以下内容 " city"的错误数据
[city] => Array\n(\n
[_40] => 0\n
[_65] => 0\n
[_55] => \n
[_72] => \n)\n\n)\n
请告诉我出了什么问题。
谢谢,
Raja K
答案 0 :(得分:1)
AsyncStorage(顾名思义)是异步的,因此当您执行post fetch请求时,地址变量仍然是Promise对象。您在后端接收的奇怪数据是该Promise的表示。
您可以通过添加额外的.then()子句轻松解决此问题:
postData() {
this.setData();
this.getData().then(address) =>
fetch('https://url/post/data',{
'method' : 'POST',
...
)}