約束はキャンセルできますか? JavaScript のキャンセルメカニズムの詳細

DDD
リリース: 2024-11-02 22:47:03
オリジナル
570 人が閲覧しました

 Can Promises Be Cancelled? A Deep Dive into Cancellation Mechanisms in JavaScript

Promise - Promise を強制的にキャンセルすることは可能ですか

ES6 Promise 自体はキャンセルをサポートしていません。ただし、ECMAScript 標準の Promise にキャンセルを追加する作業が進行中です。


Promise キャンセルの提案は、JavaScript の次期 ES2021 バージョンに含まれる WHATWG 仕様で作成されています。この提案では、Promise のキャンセルに使用できる新しい AbortController インターフェイスが導入されています。


<br>const abortController = new AbortController();<br>const Promise = fetch('https://example.com', {<br> signal: abortController.signal<br>});</p>
<p>abortController.abort();<br></ pre><br><p>最新の JavaScript では、AbortController を使用して、フェッチ リクエストやその他の非同期操作などの Promise ベースのタスクをキャンセルできます。</p></p>
<p><p> AbortController を使用できない場合は、非同期フォーム送信やネットワーク リクエストなど、ユーザーが開始した操作に対して独自のキャンセル メカニズムを実装することができます。</p><br><p><strong>JavaScript でのカスタム キャンセル メカニズムの作成</strong>: 次の方法で簡単なキャンセル メカニズムを実装できます:</p><br><ul><br><li>操作。</li><br><li>キャンセルする非同期タスクに cancelingToken を渡します。</li><br><li>ユーザーがキャンセルを開始したときに cancelingToken をキャンセルします。< /li><br></ul><br><p>CancelToken は、Promise を拒否する cancel() メソッドを使用して Promise として実装できます。以下に例を示します:</p><br><pre class="lang-js prettyprint-override"><br>const cancelToken = new Promise((resolve, detect) => {<br> return { </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
ログイン後にコピー

}
});

次に、次のように、キャンセルしたい非同期タスクに cancelToken を渡すことができます:< ;/p>

<br>const asyncTask = (cancellationToken) => {<br> // ここに非同期タスクを実装します<br> return fetch('https://example.com', {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
ログイン後にコピー

});
}

そして最後に、次のように cancel() メソッドを cancelToken で呼び出すことで、非同期タスクをキャンセルできます。 :


<br>cancellationToken.cancel();<br>

サードパーティ ライブラリの使用: サードパーティ ライブラリを使用してキャンセルを実装したい場合は、bluebird や rxjs などのライブラリを使用できます。以下は bluebird を使用した例です:


<br>const Promise = require('bluebird');<br>const cancelToken = new Promise . cancelToken();</p><p>const asyncTask = () => {<br> return fetch('https://example.com', {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">signal: cancellationToken.signal
ログイン後にコピー

});
}

cancellationToken.cancel();
< ;/pre>

これらは、JavaScript でキャンセルを実装する方法のほんの一部です。最適なアプローチは、特定のニーズによって異なります。

以上が約束はキャンセルできますか? JavaScript のキャンセルメカニズムの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:マウスカーソルの下のキャンバスピクセルのRGBカラーを取得するにはどうすればよいですか? 次の記事:Google Maps API v3 の OVER_QUERY_LIMIT エラーを防ぐ方法は?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート