将数据提交到服务器时,asyncStorage无法正常工作

时间:2018-06-08 13:48:39

标签: reactjs react-native asyncstorage

我在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

1 个答案:

答案 0 :(得分:1)

AsyncStorage(顾名思义)是异步的,因此当您执行post fetch请求时,地址变量仍然是Promise对象。您在后端接收的奇怪数据是该Promise的表示。

您可以通过添加额外的.then()子句轻松解决此问题:

postData() {
  this.setData();
  this.getData().then(address) => 
    fetch('https://url/post/data',{
      'method' : 'POST',

  ...

)}