как ждать ответа на обещание в оператор при использовании перехватчиков - PullRequest
0 голосов
/ 11 марта 2020

Я работаю над обработкой сбоя http и пытаюсь показать пользователю запрос на повторную попытку. Я сталкиваюсь с проблемой обработки ответа на обещание в задержке, когда оператор. Ниже приведен мой код

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        console.log(request);                         
            return next.handle(request).pipe(
              timeout(15000),
              retryWhen(errors => {
                return errors.pipe(

                delayWhen((error:any) => {                        

                    if(error.name == 'TimeoutError' || !navigator.onLine || error.status == 0 ){
                    return from(this.promptForRetry(error, 'Error','Request taking more time than expected, please check your connection'));
                }                    
                    else
                    return this.handleError(error);
                  })
                )
              }),
              tap((event: HttpEvent<any>) => {
                  if (event instanceof HttpResponse) {
                      console.log(event);
                  }
              }),
              catchError((err) => {                 
                  return this.handleError(err);
              })
          );
        }

, а вот моя функция подсказки:

   async promptForRetry(error, title, msg){
        let retry_subject = new Subject();        
        let retry = await this.alertCtrl.create({
            header:title,
            message: msg,
            buttons: [
                {
                    text: 'No',
                    handler: () => {                        
                        retry_subject.error( error );
                        retry_subject.complete();
                        retry.dismiss();
                        return false;
                    }
                },
                {
                    text: 'Retry',
                    handler: () => {                        
                        retry_subject.next( 1 );
                        retry_subject.complete();
                        retry.dismiss();
                        return false;
                    }
                }
            ]
        });
       await retry.present();
       await retry.onWillDismiss();              
       return retry_subject;
    }

независимо от того, что я выберу повтор или нет кнопки из подсказки, он снова запрашивает.

пожалуйста помогите как обработать ответ в delaywhen

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