не могли бы вы сказать мне, как распечатать ответ асинхронной операции синхронно в javascript?
У меня есть обещания 3, которые вызываются асинхронно, но я хочу получать данные синхронно
Я знаю Promise.all, но он терпит неудачу, когда одно из обещаний терпит неудачу. Мне нужно, чтобы он показал те обещания, которые выполнены.
Во-вторых, asyn await, но block - асинхронный запрос.
так что есть другой способ сделать это означает, что мы запускаем несколько запросов асинхронно и получить данные синхронно, распечатать все выполненные обещания.
Я пробовал вот так
// Import stylesheets
import './style.css';
// Write Javascript code!
let promises =[]
const appDiv = document.getElementById('app');
appDiv.innerHTML = `<h1>JS Starter</h1>`;
var promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 1000, 'foo');
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(resolve, 2000, '222foo');
});
var promise3 = new Promise(function(resolve, reject) {
setTimeout(reject, 2000, 'reject');
});
// Promise.all([promise1,promise2]).then((result)=>{
// appDiv.innerHTML ='a::' +result[0] + 'b::'+result[1]
// }).catch(reason => {
// console.info(reason)
// appDiv.innerHTML =reason
// });
promises.push(promise1);
promises.push(promise2);
promises.push(promise3);
Promise.all(promises.map((promise, i) =>
promise.catch(err => {
throw err;
})
)).then(results => {
console.info("everything worked fine, I got ", results);
}, err => {
console.error("promise No failed with ", err);
});
https://stackblitz.com/edit/js-l1cfac
любое обновление
ты можешь изменить мой код
Можете ли вы обновить мой код stackblitz.com/edit/js-l1cfac
вижу не работает stackblitz.com/edit/js-l1cfac
.catch() возвращает обещание новый, но не изменяет исходное обещание. В вашем Promise.all() нет ссылок на обещания, которые обнаруживают потенциальные ошибки.
можешь поделиться своим кодом?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Добавьте пункт
.catch()в каждое отдельное обещание и не включайте в негоthrow, тогдаPromise.all()будет работать всегда, пока все обещания в конечном итоге урегулируются.