Siema! Mam pewien problem, ucze sie typescript i postanowilem w ramach treningu zaimplementowac metode Promise.all. O ile logika w tym zagadnieniu jest juz dla mnie zrozumiala, to problem mam z uzyskanie w pelni funkcjonalnosci mojej metody. Nie wiem jak zabrac sie za to aby moja metoda zwracala rozne typy wartosci wynikow w tablicy. W JS mi to dziala jak powinno bo nie ma tam silnego typowania. Czy jest jakis latwy sposob aby zaimplemenowac moje rozwiazanie. (myslalem nad przeciazaniem) ale nie wiem czy to jest "czyste" rozwizanie. Ewentualnie czy ktos by mogl mnie naprowadzic na jakies materialy z zaawansowanym typescriptem. Pozdrawiam.
const promiseAll = <T>(arrayOfPromise: Promise<T>[]): Promise<T[]> => {
const isArrayOfPromisesEmpty = arrayOfPromise.length === 0;
if (isArrayOfPromisesEmpty)
return Promise.resolve([]);
const resolvedPromises: T[] = [];
let resolvedPromisesCounter = 0;
return new Promise((resolve, reject) => {
for (const [index, promise] of arrayOfPromise.entries()) {
promise
.then((result) => {
resolvedPromises[index] = result;
resolvedPromisesCounter++;
const hasResolvedAllPromises = resolvedPromisesCounter === arrayOfPromise.length
if (hasResolvedAllPromises) {
resolve(resolvedPromises);
}
})
.catch((error) => {
reject(error);
});
}
});
};
const promise = new Promise<string>((resolve,recjet) =>
setTimeout(() => {
resolve("GooD")
}, 1000));
const promise2 = new Promise<string>((resolve,recjet) =>
setTimeout(() => {
resolve("World")
}, 1000));
const promise3= new Promise<string>((resolve, reject) =>{
setTimeout(() =>{
resolve("!")
},200)
}
);
promiseAll([promise, promise2, promise3])
.then((results) => console.log("Success:", results))
.catch((error) => console.error("Error:", error));