この記事では、setTimeout という、実行後にコールバックを実行する関数を変換する方法について説明します。指定された遅延を、非同期の処理に使用できる Promise に変換します。
最新の JavaScript は、非同期操作を表す便利な方法を提供するネイティブ Promises をサポートしています。 setTimeout を Promise に変換するには、それを Promise コンストラクターでラップし、コールバックとして解決関数を渡します。
function later(delay) { return new Promise((resolve) => { setTimeout(resolve, delay); }); }
この関数は、指定された遅延の後に解決される Promise を返します。
独自の Promise 実装を作成したい場合は、Promise プロトタイプを定義して、それを次のように使用できます。
function setTimeoutReturnPromise() { function promise() { } promise.prototype.then = function() { console.log('timed out'); }; setTimeout(() => { return this; // Return the promise object }, 2000); return new promise(); }
キャンセル可能な Promise を作成するには、キャンセル メソッドを提供するカスタム オブジェクトで setTimeout をラップします。
const later = (delay, value) => { let timer = 0; let reject = null; const promise = new Promise((resolve, _reject) => { reject = _reject; timer = setTimeout(resolve, delay, value); }); return { get promise() { return promise; }, cancel() { if (timer) { clearTimeout(timer); timer = 0; reject(); reject = null; } } }; };
このオブジェクト操作を終了するために使用できる Promise メソッドと cancel メソッドを返します。
以上がJavaScript で「setTimeout」を Promise に変えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。