Счастливые разработчики в понедельник!
У меня к вам вопрос, на который я не смог ответить сам.
В настоящее время я создаю приложениекоторый получает тонну данных от сервисов, которые сам выполняет несколько запросов API.
Теперь мне нужно выполнить все эти вызовы API, прежде чем мое приложение будет доступно пользователю.
Теперь мой вопрос: «Как правильно построить структуру приложения, в которой вы зависите от данных».
В настоящее время реализовано решение:
Каждый сервис сам по себе имеетнесколько функций, которые затем создают несколько HTTP-запросов на получение.
В настоящее время у меня есть основной сервис, который импортирует все остальные сервисы.Затем я получаю массу обещаний, одно за другим, контролируя поток.Теперь это работает хорошо, если я хочу сделать это один раз в начале моего приложения.Но теперь я хочу сделать те же самые звонки во время работы моего приложения.Но всякий раз, когда я импортирую этот основной сервис из другого сервиса, я создаю циклическую зависимость, поскольку основной сервис импортирует все доступные сервисы.
Теперь, как правильно это сделать? Мне нужноУ меня есть функция, которую я могу вызвать, которая извлекает все данные, необходимые для моего приложения, и я должен иметь возможность вызывать эту функцию из любого компонента и / или службы в моем приложении, не создавая циклическую зависимость.
Как бы вы, ребята, решили это?И есть ли лучший метод для этого?
** К вашему сведению, это не стандартное приложение, а «киоск».Сначала мы хотим получить все данные, чтобы приложение практически никогда не загружалось.Кроме того, когда я вызываю эту функцию, чтобы восстановить все данные.**
Пример кода основного обслуживания:
constructor(
private testservice1: TestService1,
private testservice2: TestService2,
private testservice3: TestService3,
private testservice3: TestService4
) {
this.loading = true;
this.getApplicationLogic()
.then(() => {
this.loading = false;
})
}
public getApplicationLogic() {
return new Promise((resolve, reject) => {
testservice1.getTest()
.then(
res => {
testservice1.setTestConfig(res);
return this.testservice2.getTest2();
},
msg => {
throw new Error(msg)
})
.then(
res => {
testservice2.setTestConfig(res);
return this.testservice3.getTest3();
},
msg => {
throw new Error(msg)
})
.then(
res => {
testservice3.setTestConfig(res);
resolve();
},
msg => {
throw new Error(msg)
})
});
}