- Обещания должны выполняться параллельно, а не один за другим.
- Если все промисы выполняются менее чем за 50 мс, а затем возвращают сумму всех трех.
- Если какой-либо из промисов занимает более 50 мс, верните сумму первых двух, независимо от того, как долго берут.
function getPromise(): Promise {
return new Promise(resolve => {
setTimeout(()=>{
resolve(Math.round(Math.random() * 10))
}, Math.random() * 100);
})
};
const TIMEOUT_MS = 50;
async function foo(){
const promises = [getPromise(), getPromise(), getPromise()];
const timeBefore = new Date().getTime()
const results: number[] = await Promise.all(promises);
const timeAfter = new Date().getTime();
const duration = timeAfter - timeBefore;
// if the duration is within 50ms then return the sum of all 3
if(duration acc + current, 0);
return sum
}
// todo
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... o-long-onc