web-dev-qa-db-ja.com

this.http.getで2分を超えるタイムアウトを設定することはできませんか?

私のangular 4.3.2コードは、戻るのに2〜4分かかるバックエンドサービスを呼び出しています。デフォルトの_this.http.get_コードだけを使用すると、デフォルトのタイムアウトが発生します。 2分後ですが、2分を超えるタイムアウトを設定しようとすると、タイムアウトが2分を超えることはありません。

私は100、100000(1.7m)、114000(1.9m)を試してみましたが、これらはこれらの値でタイムアウトするという点で機能します。しかし、126000(2.1m)、180000(3m)、1800000(30m)を試すと、2分後にタイムアウトになることがわかります。

_this.http.get('myUrl')
.timeout(126000)
.map((res: Response) => this.convertResponse(res));
_

.timeoutWith(126000, Observable.throw(new Error("Timed out")))でも試してみましたが、役に立ちませんでした。

5
Mike K.

ブラウザのネットワークタイムアウトの問題はないと思います。jQuery.ajax()を使用すると、バックエンドからHTTPヘッダーや部分的なボディを送信することなく、はるかに長いリクエストを作成でき、リクエストは維持されます。

コメントであなたから返事はもらえませんでしたが、開発マシンでこの問題が発生していました。 proxy config を使用しており、プロキシのデフォルトのタイムアウトは120秒(2分)です。その場合は、構成でより高い値を定義する必要があります。

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "timeout": 360000
  }
}

しかし、私は@Reactgularに同意します。ほとんどの場合、HTTPリクエストはすぐに返ってくるはずです。

0
Marcos Dimitrio