Как получить несколько полей из экспозиции SecureStore
Я новичок в ES6 и реагирую на родной, пытаясь получить несколько значений из SecureStore.
Я думаю, что я неправильно понимаю обещания здесь... global.userData пуст в функции Promise.all(обещания).then. Соответствующие значения существуют в безопасном хранилище
Мой код:-
getUserData(fields) {
var promises = [];
var that = this;
global.userData = {};
function getField(field) {
return SecureStore.getItemAsync(field)
.then(res => {
console.log(field+"="+res); // this appears after the log below
global.userData[field] = res;
})
.catch(error => {
global.userData[field] = null;
});
}
fields.map(field => {
promises.push[getField(field)];
});
Promise.all(promises).then(function(v) {
console.log(global.userData); // this is empty
that.setState({ isReady: true }); // allow page to render
});
}
getUserData(["userId", "userName","etc"]);
1 ответ
Решение
Мой плохой... непреднамеренно используется
promises.push[getField(field)];
должно было:
promises.push(getField(field));
Удивил, что это не было обнаружено как синтаксическая ошибка...