ホームページ  >  記事  >  ウェブフロントエンド  >  約束はキャンセルできますか? JavaScript のキャンセルメカニズムの詳細

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

DDD
DDDオリジナル
2024-11-02 22:47:03571ブラウズ

 Can Promises Be Cancelled? A Deep Dive into Cancellation Mechanisms in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。