Справочная информация
Я создаю приложение Angular, в котором перечислены компании, зарегистрированные по данному адресу.
Чтобы дать некоторый контекст ...
Допустим, у меня есть x3 компании: Компания A, Компания B и Компания C.
Компания B зарегистрирована по тому же адресу, что и Компания A. Компания C не является.
Когда яперейдите к приложению и выполните фильтрацию для компании A, я ожидаю увидеть в списке только компанию B.
Проблема
Моя проблема не в том, что я не смог получитьэто работает, это просто слишком медленно!Мне нужно как-то использовать многопоточность / параллелизм.
Чтобы определить, какие компании зарегистрированы по данному адресу, мне нужно сделать несколько HTTP-вызовов.
Прежде чем объяснять последовательность, в которой ясделать HTTP-вызовы.Позвольте мне показать вам, как выглядит API:
GET /api/companies/CompanyA/address
{
id: 1,
addressLine1: '123 Some street',
...
}
GET /api/companies/CompanyA/links
[
{id: 2, name: 'Company B'},
{id: 3, name: 'Company C'},
]
Правильно, вот последовательность:
- Получите адрес для компании A и сохраните идентификатор
- Получить ссылки для компании A
- Цикл по каждой ссылке 3a.Получить адрес по ссылке 3б.Проверьте, соответствует ли идентификатор адреса идентификатору адреса компании А.Если это так, сохраните ссылку.
Текущая реализация
const companyAId: number = 1;
const companyAAddress: Object = await this.httpService.getAddress(companyAId).toPromise();
const companyALinks: Object[] = await this.httpService.getLinks(companyAId).toPromise();
const companiesToShow: Object[] = [];
for (let link of links) {
const linkAddress: Object = await this.httpService.getAddress(link ['id']).toPromise();
if (linkAddress['id'] === companyAAddress['id']) companiesToShow.push(link );
}
Должно быть более элегантное / производительное решение!
Любая помощь будет принята с благодарностью:)
Спасибо,
Бен