объединить карту с повторной попыткойПри запуске повторной попытки с того момента, когда произошел сбой без повторного запуска - PullRequest
0 голосов
/ 23 июня 2019

У меня есть N` URL, я не знаю, сколько (пока не прибудет условие остановки)

Вот как я его использую:

 from(observableUrls)
  .pipe(
    mergeMap(url => callHttpService(url) , 4),
    retryWhen(
       // what is the algorithm or suggestion how to?
    )
  ).subscribe( result => {
     // doing some stuff with my results
  });

Что такое алгоритм или предложениекак реализовать повторную попытку без повторного запуска в случае сбоя некоторых URL-адресов.

StackBlitz: https://angular -w5t15m.stackblitz.io

1 Ответ

0 голосов
/ 23 июня 2019

Вы должны использовать retryWhen в наблюдаемом конвейере отдельных callHttpService(url), например:

from(observableUrls)
              .pipe(
                mergeMap(url => callHttpService(url)
                                    .pipe(
                                      retryWhen(
                                        // use your retryWhen logic here
                                      )
                                    ) , 4)                
              ).subscribe( result => {
                // doing some stuff with my results
              });

Наличие retryWhen в наблюдаемом конвейере внутренней наблюдаемой (callHttpService(url)) обеспечит повторную попытку только той наблюдаемой снова в соответствии с retryWhen логикой. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...