ホームページ > 記事 > ウェブフロントエンド > 約束はキャンセルできますか? JavaScript のキャンセルメカニズムの詳細
c1a436a314ed609750bd7c7d319db4daPromise - Promise を強制的にキャンセルすることは可能ですか2e9b454fa8428549ca2e64dfac4625cd
e388a4556c0f65e1904146cc1a846beeES6 Promise 自体はキャンセルをサポートしていません。ただし、ECMAScript 標準の Promise にキャンセルを追加する作業が進行中です。94b3e26ee717c64999d7867364b1b4a3
e388a4556c0f65e1904146cc1a846beePromise キャンセルの提案は、JavaScript の次期 ES2021 バージョンに含まれる WHATWG 仕様で作成されています。この提案では、Promise のキャンセルに使用できる新しい AbortController インターフェイスが導入されています。94b3e26ee717c64999d7867364b1b4a3
51abefc4b05ee9b427240ef31afd3f3e
const abortController = new AbortController();
const Promise = fetch('https://example.com', {
signal: abortController.signal
});
abortController.abort();
fe04a462b0c07061599c6327b7badba4
e388a4556c0f65e1904146cc1a846bee最新の JavaScript では、AbortController を使用して、フェッチ リクエストやその他の非同期操作などの Promise ベースのタスクをキャンセルできます。94b3e26ee717c64999d7867364b1b4a3
e388a4556c0f65e1904146cc1a846bee AbortController を使用できない場合は、非同期フォーム送信やネットワーク リクエストなど、ユーザーが開始した操作に対して独自のキャンセル メカニズムを実装することができます。94b3e26ee717c64999d7867364b1b4a3
e388a4556c0f65e1904146cc1a846beeJavaScript でのカスタム キャンセル メカニズムの作成: 次の方法で簡単なキャンセル メカニズムを実装できます:94b3e26ee717c64999d7867364b1b4a3
ff6d136ddc5fdfeffaf53ff6ee95f185
25edfb22a4f469ecb59f1190150159c6操作。bed06894275b65c1ab86501b08a632eb
25edfb22a4f469ecb59f1190150159c6キャンセルする非同期タスクに cancelingToken を渡します。bed06894275b65c1ab86501b08a632eb
25edfb22a4f469ecb59f1190150159c6ユーザーがキャンセルを開始したときに cancelingToken をキャンセルします。548cefb384a95312edb7e8fb1f4ecc29
929d1f5ca49e04fdcb27f9465b944689
e388a4556c0f65e1904146cc1a846beeCancelToken は、Promise を拒否する cancel() メソッドを使用して Promise として実装できます。以下に例を示します:94b3e26ee717c64999d7867364b1b4a3
51abefc4b05ee9b427240ef31afd3f3e
const cancelToken = new Promise((resolve, detect) => {
return {
cancel: () => reject(new Error('Operation has been cancelled.'))
}
});
bc5574f69a0cba105bc93bd3dc13c4ec
e388a4556c0f65e1904146cc1a846bee次に、次のように、キャンセルしたい非同期タスクに cancelToken を渡すことができます:< ;/p>
const asyncTask = (cancellationToken) => {
// ここに非同期タスクを実装します
return fetch('https://example.com', {cancel: () => reject(new Error('Operation has been cancelled.'))});
}
bc5574f69a0cba105bc93bd3dc13c4ec
e388a4556c0f65e1904146cc1a846beeそして最後に、次のように cancel() メソッドを cancelToken で呼び出すことで、非同期タスクをキャンセルできます。 :94b3e26ee717c64999d7867364b1b4a3
51abefc4b05ee9b427240ef31afd3f3e
cancellationToken.cancel();
bc5574f69a0cba105bc93bd3dc13c4ec
e388a4556c0f65e1904146cc1a846beeサードパーティ ライブラリの使用: サードパーティ ライブラリを使用してキャンセルを実装したい場合は、bluebird や rxjs などのライブラリを使用できます。以下は bluebird を使用した例です:94b3e26ee717c64999d7867364b1b4a3
51abefc4b05ee9b427240ef31afd3f3e
const Promise = require('bluebird');
const cancelToken = new Promise . cancelToken();const asyncTask = () => {
return fetch('https://example.com', {signal: cancellationToken.signal});
}cancellationToken.cancel();
< ;/pre>
e388a4556c0f65e1904146cc1a846beeこれらは、JavaScript でキャンセルを実装する方法のほんの一部です。最適なアプローチは、特定のニーズによって異なります。94b3e26ee717c64999d7867364b1b4a3以上が約束はキャンセルできますか? JavaScript のキャンセルメカニズムの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。