Почему я получил обещание вместо объекта? - PullRequest
0 голосов
/ 18 июня 2020

Работая с проектом React-Native, я решил написать небольшой сервис для AsyncStorage, который позволяет работать с объектами на основе официальных документов

    import {AsyncStorage} from "react-native-web";


        export async function getUserFromStore() {
            try {
                const user = await AsyncStorage.getItem('userData');

                return  JSON.parse(user);
            } catch (error) {
                console.log('ERROR. Trying to get user data to store, got  ', error)
            }
        } 

export async function saveUserToStore(data) {
    await AsyncStorage.setItem(
        'userData',
        JSON.stringify(data),
        (error) => {
            console.log('ERROR. Trying to set user data to store, got ', error)
        }
    );
}

Я устанавливаю пользовательские данные объект во время входа в систему. Я вхожу в основной компонент, чтобы решить, что рендерить

const AppStackScreen = () => (
        <AppStack.Navigator>
            <AppStack.Screen name="Tabbed" component={TabsScreenNavigationScreen} />
        </AppStack.Navigator>
    );

export default () => {
    const user = AsyncStoreService.getUserFromStore();

    console.log('GOT USER', user)
    return (
        <NavigationContainer>
            {user ?
                <AppStackScreen/>
                :
                <AuthStackNavigationScreen/>
            }
        </NavigationContainer>
    )
};

Итак, мне нужно получить объект вроде {name: 'John', mail: 'john@mail.loc}, но вместо этого я получаю Promise{[[PromiseStatus: 'resolved']], [[PromiseValue: {name: 'John', mail: 'john@mail.loc}]]} Почему это происходит и почему я не получить объект с параметрами пользователя

1 Ответ

5 голосов
/ 18 июня 2020

Функция getUserFromStore - это asyn c, а возвращаемое значение asyn c функции - это Promise. Вам нужно выполнить это обещание, чтобы получить значение.

...