Я пытаюсь разобраться с асинхронностью / ожиданием
Я использую 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);
});
}
Это не работает, я смотрю на
- Реализация вспомогательной функции для получения значения на основе ключа
- Дождаться получения значения (синхронизация)
Может ли кто-нибудь указать мне правильное направление
Спасибо
Update1:
Вот как я использую обратный вызов
selectedLocale(function(locale) {
global.layoutIsRTL = 'ar' == locale;
ReactNative.I18nManager.allowRTL(true);
global.i18n.locale = locale
});
UPDATE2:
Кажется, кто-то уже сделал это, вот ссылка https://github.com/sunnylqm/react-native-storage/issues/206 к сожалению, мне трудно это понять.