2017-03-02 1 views
1

jsonpリクエストのタイムアウトを処理する方法は?私はjsonp.get()メソッドによって返されたオブザーバブルに対して10秒のタイムアウトを持っていますが、タイムアウトに達しても要求はブラウザに残ります。 1-2分のタイムアウト後、私は、コンソールにこのエラーが表示されます。私のコンポーネントで64jsonpリクエストのタイムアウトエラーを回避するには?

JSONPリクエストを作成し、サブスクライブしたい:

https://myserver/?url=asdf&callback=ng_jsonp.__req0.finished ネット:: ERR_CONNECTION_TIMED_OUT browser_jsonp.jsをGET

this.service.jsonp(url).subscribe(
    (response) => { this.handleResponse(response); }, 
    (err) => { this.handleError(err); } 
); 

これは私のサービスでJSONPの方法であって、このようなことに

jsonp(url: string): Observable<any> { 
    let params = new URLSearchParams(); 

    params.set('url', url); 
    params.set('callback', 'JSONP_CALLBACK'); 

    return this.jsonp.get('https://myserver', {search: params}) 
    .timeout(10000) 
    .catch((err: Response) => Observable.throw(err)) 
    .map((response: Response) => response.json()); 
} 

答えて

1

JSONP実際には<script>タグがページに追加されています。 Angularはドキュメントからノードを削除します(これはIEとEdgeでもOKですが、Firefoxではdocument.onbeforescriptexecuteを使用する必要がありますが、Chromeの処理方法はわかりません)が、スクリプトはまだロードされています。コンソール。

+0

ありがとうございました。だから、基本的には、私はjsonp要求によって、したがってスクリプトタグによって引き起こされるエラーをキャッチできないと言っていますか? – RichieRock

+0

なぜそれをキャッチする必要がありますか?あなたの便宜のために、Chromeは単にリソースローディングエラーをコンソールに出力します。 – kemsky

関連する問題