[解決済み] Fetch APIのリクエストタイムアウト?
2022-04-22 19:49:26
質問
私は
fetch-api
POST
をリクエストしてください。
fetch(url, {
method: 'POST',
body: formData,
credentials: 'include'
})
また、このタイムアウトを3秒や不定秒など特定の値に設定するにはどうすればよいのでしょうか?
解決方法は?
編集1
コメントで指摘されているように、元の答えのコードは、約束が解決/拒否された後でもタイマーを実行し続けています。
以下のコードでその問題を解決します。
function timeout(ms, promise) {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(new Error('TIMEOUT'))
}, ms)
promise
.then(value => {
clearTimeout(timer)
resolve(value)
})
.catch(reason => {
clearTimeout(timer)
reject(reason)
})
})
}
オリジナル回答
デフォルトの指定はありません。 仕様 は、タイムアウトについて全く議論していません。
一般的なプロミスに対して、独自のタイムアウトラッパーを実装することができます。
// Rough implementation. Untested.
function timeout(ms, promise) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject(new Error("timeout"))
}, ms)
promise.then(resolve, reject)
})
}
timeout(1000, fetch('/hello')).then(function(response) {
// process response
}).catch(function(error) {
// might be a timeout error
})
で説明したように https://github.com/github/fetch/issues/175 コメント https://github.com/mislav
関連
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptにおけるendsWith
-
[解決済み] Trelloはどのようにユーザーのクリップボードにアクセスするのですか?
-
[解決済み] jQueryでドロップダウンリストの選択値を変更する
-
[解決済み] REST APIからデータを取得しようとしたときに、要求されたリソースに'Access-Control-Allow-Origin'ヘッダーが存在しない。
-
[解決済み] jQuery Ajax ファイルアップロード
-
[解決済み] フェッチする JSONデータをPOSTする
-
[解決済み】fetch apiでフォームデータを投稿するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueのグローバルがscss(mixin)を導入。
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
Vueのクラススタイルの使い方の詳細
-
vueにおけるfilterの適用シーンについて解説します。
-
Vueのフィルタの説明
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】AxiosとFetchの違いは何ですか?
-
[解決済み】HTTP fetch()リクエストをキャンセルするにはどうすればいいですか?