Skip to content

Commit 78a82fd

Browse files
committed
[skip ci] ensure that even if one request fails, the rest continue executing
1 parent a4f1818 commit 78a82fd

File tree

1 file changed

+21
-21
lines changed
  • services/static-webserver/client/source/class/osparc/pricing

1 file changed

+21
-21
lines changed

services/static-webserver/client/source/class/osparc/pricing/ServicesList.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -77,30 +77,30 @@ qx.Class.define("osparc.pricing.ServicesList", {
7777
.then(data => this.__populateList(data));
7878
},
7979

80-
__populateList: function(services) {
81-
// before accessing the metadata in a sync way, we need to bring them to the cache
82-
const metadataPromises = [];
83-
services.forEach(service => {
80+
__populateList: async function(services) {
81+
const servicePromises = services.map(async service => {
8482
const key = service["serviceKey"];
8583
const version = service["serviceVersion"];
86-
metadataPromises.push(osparc.store.Services.getService(key, version));
84+
try {
85+
return await osparc.store.Services.getService(key, version);
86+
} catch (err) {
87+
console.error(err);
88+
return null; // Return null to maintain array structure
89+
}
8790
});
88-
Promise.all(metadataPromises)
89-
.catch(err => console.error(err))
90-
.finally(() => {
91-
const sList = [];
92-
console.log("services", services);
93-
services.forEach(service => {
94-
const key = service["serviceKey"];
95-
const version = service["serviceVersion"];
96-
const serviceMetadata = osparc.store.Services.getMetadata(key, version);
97-
if (serviceMetadata) {
98-
sList.push(new osparc.data.model.Service(serviceMetadata));
99-
}
100-
});
101-
const servicesList = this.getChildControl("services-list");
102-
servicesList.setModel(new qx.data.Array(sList));
103-
})
91+
92+
// ensure that even if one request fails, the rest continue executing
93+
const results = await Promise.allSettled(servicePromises);
94+
const serviceModels = new qx.data.Array();
95+
results.forEach(result => {
96+
if (result.status === "fulfilled" && result.value) {
97+
const serviceMetadata = result.value;
98+
serviceModels.push(new osparc.data.model.Service(serviceMetadata));
99+
}
100+
});
101+
102+
const servicesList = this.getChildControl("services-list");
103+
servicesList.setModel(serviceModels);
104104
},
105105

106106
__openAddServiceToPlan: function() {

0 commit comments

Comments
 (0)