web-dev-qa-db-fra.com

Vous ne pouvez pas avoir un délai d'attente de plus de 2 minutes avec cela.http.get?

Mon angular 4.3.2 Code appelle mon service back-end qui prend 2-4 minutes pour revenir. Utiliser uniquement le code par défaut this.http.get, Je vois que le délai d'attente par défaut Au bout de 2 minutes. Cependant, lorsque j'essaie de mettre dans un délai d'attente de quelque chose de plus de 2 minutes, il échoue, il ne laissera jamais le délai d'attente plus de 2 minutes.

J'ai essayé avec 100, 100 000 (1,7 m) et 114000 (1,9 m) et ceux qui travaillent dans la mesure où il est expiré à ces valeurs. Mais lorsque j'essaie 126000 (2,1 m), 180000 (3M) et 1800000 (30m), je le vois à nouveau après 2 minutes.

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

J'ai aussi essayé avec .timeoutWith(126000, Observable.throw(new Error("Timed out"))) en vain.

7
Mike K.

Je ne pense pas que ce soit un problème avec le délai d'attente du réseau du navigateur, car je peux faire une demande beaucoup plus longue à l'aide de JQuery.ajax (), sans même transmettre un en-tête HTTP ou un organe partiel du backend, et la demande est conservée en vie.

Je n'ai pas reçu de réponse de votre part dans les commentaires, mais j'avais ce problème exact sur ma machine de développement. J'utilisais le configuration proxy et le délai d'attente par défaut du proxy est de 120 secondes (2 minutes). Si c'est votre cas, il vous suffit de définir une valeur plus élevée dans la configuration.

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

Mais je suis d'accord avec @reacgular que dans la plupart des cas, vous souhaiterez des demandes HTTP qui reviennent rapidement.

0
Marcos Dimitrio