为什么我得到了承诺而不是对象?
Why I got promise instead of object?
使用 React-Native
项目,我决定基于 official docs
为允许使用对象的 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}]]}
为什么会发生以及为什么我没有得到带有用户参数的对象
函数 getUserFromStore 是异步的,return value of an async function 是一个 Promise。
您需要解决该承诺才能获得价值。
使用 React-Native
项目,我决定基于 official docs
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}]]}
为什么会发生以及为什么我没有得到带有用户参数的对象
函数 getUserFromStore 是异步的,return value of an async function 是一个 Promise。 您需要解决该承诺才能获得价值。