asyncStorage не работает должным образом при отправке данных на сервер - PullRequest
0 голосов
/ 08 июня 2018

Я использую asyncStorage и тестирование в эмуляторе Android.Ниже приведен код.

 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

Пожалуйста, подскажите, что произошлонеправильно.

Спасибо,
Раджа К

1 Ответ

0 голосов
/ 08 июня 2018

AsyncStorage является (как следует из названия) асинхронным, поэтому при выполнении запроса после выборки переменная адреса все еще является объектом Promise.Странные данные, которые вы получаете в бэкэнде, - это представление Обещания.

Вы можете легко исправить это, добавив дополнительное предложение .then ():

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

  ...

)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...