Я использую реагировать родной и экспо.У меня есть этот код:
const a = {};
const promises = [];
someArray.forEach(c => {
a[c] = {
ref: firebase.ref(`someref/${c}`),
data: null
}
promises.push(new Promise((resolve, reject) => {
a[c].ref.on('value', (snap) => {
const data = snap.val() || {};
// do something with data
resolve(data);
},
(err) => {
console.error(err)
return reject(err)
})
}))
});
function isIterable(obj) {
// checks for null and undefined
if (obj == null) {
return false;
}
return typeof obj[Symbol.iterator] === 'function';
}
console.log(promises)
console.log(isIterable(promises))
Promise.all(promises).then((values)=>{
console.log("promise all values", values)
}).catch(e=>{
console.error("promise all failed",e)
})
Я получаю эту ошибку promise all failed TypeError: [object Object] is not iterable!
при работе на Android. Отлично работает на iOS и в режиме JS удаленной отладки .Результат console.log(promises)
равен
Array [
Promise {
"_a": undefined,
"_c": Array [],
"_d": false,
"_h": 0,
"_n": false,
"_s": 0,
"_v": undefined,
},
]
, а странная вещь - console.log(isIterable(promises))
отпечатки false
есть идеи?