#javascript #reactjs #asynchronous #firebase-realtime-database #firebase-storage
#javascript #reactjs #асинхронный #firebase-realtime-database #firebase-хранилище
Вопрос:
const promises = this.state.selectedFile.map(picture => {
const ref = Firebase.getStorageRef(`/${picture.name}`);
return ref
.put(picture)
.then(() => ref.getDownloadURL());
});
Приведенный выше код вызывает загрузку списка файлов в хранилище firebase, а затем возвращает его URL.
Promise.all([promises]).then(
console.log(promises),
this.setState({ mage: this.state.mage.concat([promises]) },()=>console.log(this.state.mage)))
Затем я попытался передать это const promises
, представляющее собой массив обещаний, в качестве параметра Promise.all()
, который, как я предполагал, будет ждать, пока все обещания будут выполнены.
Какой подход вы предлагаете?
Комментарии:
1.
Promise.all([promises])
->Promise.all(promises)
2. Всегда используйте
Promise.all
для таких сценариев илиPromise.allSettled(promises)
, эта функция возвращает массив результатов со статусом всех обещаний, были ли они разрешены или отклонены3. Я попробовал (promises), но он говорит, что его невозможно повторить. @tkausl
4. @PiyushRana Попробовал ‘Promise.allSettled ()’ , он выполняется перед массивом обещаний и не ожидает.
5. Вы пробовали это так: const promises = [promises]; const responsions = await Promise.allSettled(обещания); или Promise.allSettled(обещания).then(результаты => {});