【发布时间】:2019-05-31 01:51:04
【问题描述】:
我正在尝试使用异步/等待来解决问题
我在 react-native 中为我的项目使用 https://github.com/sunnylqm/react-native-storage。
我正在使用异步存储来存储一些关键信息,例如选定的用户区域设置,我需要在根据选定的区域设置将屏幕呈现到显示屏幕之前检索此值。
我尝试过实现几个辅助函数,它与回调一起使用,我需要的是返回值而不是回调并等待获取值。以下是我尝试过的几个示例。
// 1
_selectedLocale = async () => {
try {
const value = await global.storage.load({key: 'selectedLocale'});
return value
} catch (error) {
console.log(value)
}
}
var selectedLocale = _selectedLocale();
// 2
export async function _selectedLocale() {
return storage.load({key: 'selectedLocale'});
}
var selectedLocale = _selectedLocale();
// 3
export function selectedLocale(callback) {
storage.load({key: 'selectedLocale'}).catch(e => {
callback(RNLanguages.language);
}).then(function(locale) {
callback(locale);
});
}
这不起作用,我正在寻找
- 实现一个辅助函数以根据键检索值
- 等到检索到值(同步)
谁能指出正确的方向
谢谢
更新1:
这是我如何使用回调
selectedLocale(function(locale) {
global.layoutIsRTL = 'ar' == locale;
ReactNative.I18nManager.allowRTL(true);
global.i18n.locale = locale
});
更新 2:
似乎有人已经这样做了,这是参考https://github.com/sunnylqm/react-native-storage/issues/206 不幸的是我很难理解它。
【问题讨论】:
-
selectedLocale永远是一个承诺,这只是预期的。await不会停止世界,只会停止当前的函数体。 -
您能否发布一下您如何使用回调函数?
-
@Bergi 更新了我的代码,请检查
-
关于回调很抱歉,我还没有发布我用于回调的另一个函数,让我更新帖子。
-
@Bergi 我在代码示例中添加了#3,带有回调助手。
标签: javascript react-native promise es6-promise