Я работаю над проектом, в котором я создаю простой внешний интерфейс на Angular (машинопись) / Node для вызова внутреннего сервера для выполнения различных задач.Эти задачи требуют времени для выполнения и, следовательно, должны быть поставлены в очередь на внутреннем сервере.Я решил эту проблему, следуя следующему руководству: https://github.com/realpython/flask-by-example, и все, кажется, работает просто отлично.
Теперь я заканчиваю работу над внешним интерфейсом, где большая часть кода уже написана на Typescript с использованием Angular и Rxjs.Я пытаюсь повторить следующий код в Typescript:
https://github.com/dimoreira/word-frequency/blob/master/static/main.js
Этот код состоит из двух функций, где первая функция "getModelSummary" (в данном примере getResults) вызывает метод post через:
public getModelSummary(modelSummaryParameters: ModelSummaryParameters): Observable<ModelSummary> {
return this.http.post(`${SERVER_URL}start`, modelSummaryParameters)
.map(res => res.json())
;
}
, чтобы поставить задание в очередь и назначить для этой функции идентификатор задания на внутреннем сервере.Вторая функция «listenModelSummary», в идеале, должна выполняться сразу после первой функции с заданием jobId в качестве входного сигнала и за короткое время зацикливается, проверяя, выполнено ли задание или нет:
public listenModelSummary(jobID: string) {
return this.http.get(`${SERVER_URL}results/` + jobID).map(
(res) => res.json()
);
}
После выполнения заданиясделано, нужно вернуть результаты, что обновит интерфейс.
Я новичок в Typescript, Observables и rxjs и хотел спросить, как это сделать правильно.Я не хочу использовать javascript, но хочу как можно больше придерживаться Typescript в моем стеке кода переднего плана.Как я могу использовать первую функцию, чтобы вызвать вторую функцию с ее выводом "jobID" и запустить вторую функцию через интервал до тех пор, пока выход не вернется?