服务器关闭时防止Observable重试

时间:2018-06-17 14:49:46

标签: angular rxjs observable

在下面的代码中,我使用httpClient从端点获取用户列表, 在完美的世界中,应用程序发送一个http请求并获取用户列表, 但是当服务器返回4xx5xx错误时,应用程序会在10毫秒后重试并继续向服务器发送数千个http请求。

this.http.get<User[]>(SERVER_API_URL + '/api/not_found')
    .subscribe(
        value => console.log('subscribe.next'),
        err => console.log('subscribe.error'),
        () => console.log('subscribe.done')
    );

如何停止重播应用。

我尝试将Observable转换为Promise但我得到的结果相同。

  • &#34; @ angular / core&#34;:&#34; 6.0.0&#34;
  • &#34; @ angular / http&#34;:&#34; 6.0.5&#34;
  • &#34; rxjs&#34;:&#34; 6.2.1&#34;

2 个答案:

答案 0 :(得分:1)

有一种重试方法可以自动重新订阅失败的Observable指定的次数。重新订阅HttpClient方法调用的结果会重新发出HTTP请求。

this.http.get<User[]>(SERVER_API_URL + '/api/not_found')
        .pipe(
          retry(0), // retry a failed request up to 0 times
          catchError(this.handleError) // then handle the error
        ).subscribe(...);
    }

参考:https://angular.io/guide/http

答案 1 :(得分:0)

您也可以取消订阅。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class Dashboard_controller extends Auth_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('email');
        $this->load->library('calendar');
    }

    public function index()
    {
        //my code here
    }
}


error