我一直在尝试使用expo在本机上获取用户区域设置。问题是,我需要获取promise值并将其传递给return函数。该值当前为“未定义”。
这是代码:
export default locales = () => {
var locals;
Expo.DangerZone.Localization.getCurrentLocaleAsync().then((value) => {
locals = value;
});
return locals;
}
如何获取承诺值并将其返回给函数?
答案 0 :(得分:0)
return locals;
发生在您的诺言返回之前,因此undefined
也是如此。您需要使用回调:
export default locales = (callback) => {
Expo.DangerZone.Localization.getCurrentLocaleAsync().then((value) => {
return callback(value);
});
}
然后您可以像这样访问值:
your_module.locales((locals)=>{
// use locals here
});
或者,如果您可以在较新版本的节点中访问异步/等待,则:
export default locales = async () => {
let value = await Expo.DangerZone.Localization.getCurrentLocaleAsync()
return value;
}
然后您将这样调用函数:
let locals = await your_module.locales()
但是,考虑到有一个功能Expo.DangerZone.Localization.getCurrentLocaleAsync()
,您确定不存在同步版本getCurrentLocaleSync()
或getCurrentLocale()
吗?这样可以轻松得多,您可以直接调用该函数并获取值。