AsyncStorage setItem/getItem не работает?

Я использую AsyncStorage для хранения и извлечения некоторой информации (например, имени, электронной почты) в приложении. когда я вызываю setItem, он возвращает обещание "_45":0,"_65":0,"_55":null:"_75":null, и getItem также возвращает то же самое. Как установить/получить значение в AsyncStorage? Я использую следующий код:

export async function setItem(key, value) {
  try {
    var data = await AsyncStorage.setItem(key, value);
  } catch (error) {

  }
}

export async function getItem(key) {
  try {
    var item = await AsyncStorage.getItem(key);
    if(item !== null) {
      return item;
    }
  } catch (error) {

  }
}

Заранее спасибо.


person naren mnp    schedule 06.11.2017    source источник


Ответы (2)


Ваша функция возвращает обещания. async/await - это просто синтаксический сахар. Если вы хотите получить предмет от AsyncStorage с помощью своего помощника, вам нужно использовать так:

getItem('someKey')
  .then(val => console.log(val)
  .catch(err => console.log(err))

or

function async getItemAndDoSomething() {
  const item = await getItem('someKey')
  // do something with your item here
}

getItemAndDoSomething()
person lukaleli    schedule 06.11.2017
comment
Но он вернет следующее: _45:0,_65:0,_55:MyExpectedValue,_75:null . как я могу получить доступ к значению, используя _55 или любой другой способ? - person naren mnp; 07.11.2017

Возвращаемое значение функции async заключено в обещание. Внутри вашего getItem вы можете получить доступ к item как к стандартному объекту, но вызывающие getItem должны либо (1) быть асинхронной функцией, либо (2) обрабатывать возвращаемое значение как обещание.

person A. Goodale    schedule 06.11.2017