能否请您告诉我如何在javascript中同步打印异步操作的响应?
我有3
个Promise,它是异步调用的,但想同步获取数据
我知道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.log(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.log("everything worked fine, I got ", results);
}, err => {
console.error("promise No failed with ", err);
});
https://stackblitz.com/edit/js-l1cfac
任何更新