ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で setTimeout を使用して Promise を作成および管理する方法

JavaScript で setTimeout を使用して Promise を作成および管理する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 00:27:11711ブラウズ

How to Create and Manage Promises Using setTimeout in JavaScript?

setTimeout から Promise を作成する方法

setTimeout の基本 Promise を作成する

async が実行できる Promise を作成するにはsetTimeout コールバックが起動した後に return する場合、以下のスニペットに示すように、setTimeout 関数を Promise コンストラクター内にラップできます。

<br>function setTimeoutReturnPromise(lay) {<br> return new Promise ((解決) => {</p>
<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);

});
}

この関数は引数として遅延を受け取り、Promise を返します。 Promise は指定された遅延が経過した後に解決され、setTimeout 関数のコールバックが実行されます。

async で Promise を使用する

次に、async 関数を見てみましょう。 setTimeoutReturnPromise 関数を使用して、返すことができる Promise を作成できます。これにより、setTimeout コールバックが呼び出された後に then() メソッドを使用してコードを実行できるようになります:

<br>async(function() {<br> setTimeoutReturnPromise(5000).then( () => {</p>
<pre class="brush:php;toolbar:false">console.log("async called back");

});
});

ES2015 以降の更新

ES2015 と最新の JavaScript の導入以来、Promise は組み込み機能になります。構文は以下に示すように簡略化されています。

<br>function Later(lay) {<br> return new Promise((resolve) => {</p>
<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);

});
}

アロー関数とオプションの解決値引数を使用すると、コードをさらに圧縮できます。

<br>const Later = (遅延, 値) => new Promise(resolve => setTimeout(resolve, late, value));<br>

キャンセル可能な約束 (オプション)

タイムアウトをキャンセルしたい場合は、promise と cancel を含むオブジェクトを返すことができます。メソッド:

<br>const Later = (遅延, 値) => {<br> let timer = 0;<br> let respect = null;<br> const Promise = new Promise((resolve, _reject) => {</p><pre class="brush:php;toolbar:false">reject = _reject;
timer = setTimeout(resolve, delay, value);

});
戻る{

get promise() { return promise; },
cancel() {
  if (timer) {
    clearTimeout(timer);
    timer = 0;
    reject();
    reject = null;
  }
}

};
};

このアプローチでは、cancel() メソッドを使用してタイムアウトをキャンセルし、Promise を拒否できます。

以上がJavaScript で setTimeout を使用して Promise を作成および管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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