Получать данные из асинхронного хранилища реагировать нативно - PullRequest
0 голосов
/ 02 октября 2019

Я хочу получить данные из асинхронного хранилища и добавить их в массив. Я использую функцию console.log() для проверки данных, и она работает правильно, но когда я попытался отправить данные в массив, это не сработало, и функция возвращает пустой массив.

getData(){
    result = []
    AsyncStorage.getAllKeys((err, keys) => {
        AsyncStorage.multiGet(keys, (err, stores) => {
            stores.map((object, key)=>(
            console.log(object[1]),
             result.push(object[1])
          ));
        });
      });
    return result;
} 

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

вам нужно правильно использовать async / await, потому что AsyncStorage сильно зависит от обещаний.

getData = async () => {
    result = []
    await AsyncStorage.getAllKeys(async (err, keys) => {
        await AsyncStorage.multiGet(keys, (err, stores) => {
            stores.map((object, key)=>(
                console.log(object[1]);
                result.push(object[1]);
            ));
        });
    });
    return result;
} 
0 голосов
/ 02 октября 2019

вам нужно использовать async await для достижения этой цели ...

getData = async () => {
    result = []
    await AsyncStorage.getAllKeys((err, keys) => {
        AsyncStorage.multiGet(keys, (err, stores) => {
            stores.map((object, key)=>(
                console.log(object[1]);
                result.push(object[1]);
                ));
            });
        });
    return result;
} 
...