Дано:
Проект на реакт, в коротом есть строка поиска. Во время ввода значения срабатывают AJAX-ы для того, чтобы получить подсказки (suggestions) в количестве 8-10 штук на разные дата-сорсы.
Проблема:
Нужно показать результат двух аяксов, которые быстрее пришли, а все остальные отменить.
Сейчас оно работает на
Promise.all, который ждёт выполнение всех промисов, он не подходит.
Я знаю что в есть метод
Promise.race, но он ждёт только первый аякс (это уже чуть ближе к тому что мне нужно).
Есть ли в JS решение данной задачи или нужно писать костыль? Если костыль, то пожалуйста напишите пример, дописать реализацию:
const ajax1 = new Promise((res, rej) => setTimeout(() => res({ data1: 'work'}), 3000));
const ajax2 = new Promise((res, rej) => setTimeout(() => res({ data2: 'work'}), 6000));
const ajax3 = new Promise((res, rej) => setTimeout(() => res({ data3: 'work'}), 1000));
const ajax4 = new Promise((res, rej) => setTimeout(() => res({ data4: 'work'}), 5000));
let result = {};
// .... реализация
console.log(result); // { data3: 'work', data1: 'work' }