ES6でタイマーをクリアする方法
2 つのメソッド: 1. setTimeout タイマーをクリアするには、clearTimeout() を使用します (構文「clearTimeout (タイマー戻り値)」)。2. setInterval タイマーをクリアするには、clearInterval() を使用します。構文「clearInterval (戻り値)」 )」。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
#JS の 2 つのタイマー
window.setTimeout([関数],[間隔])
#タイマーを設定し、待ち時間を設定します。時間が経過すると、対応するメソッドが実行され、メソッドの実行が完了するとタイマーが停止します。
タイマーを設定し、待ち時間を設定し、時間になったら対応するメソッドを実行します。
メソッドの実行が完了しても、タイマーは停止しません。対応するメソッドは、手動でタイマーをクリアするまで、今後も定期的に再実行されます。
注: setTimeout() はコードを 1 回だけ実行します。複数回呼び出す場合は、setInterval() を使用するか、コード自体で setTimeout() を再度呼び出すようにします。
タイマーの戻り値JS のタイマーには戻り値があり、戻り値は現在のタイマーを表す数値です。
var timer1=window.setTimeout(function(){},1000); //timer1->1 当前是第一个定时器 var timer2=window.setTimeout(function(){},1000); //timer2->2` 当前是第二个定时器 var timer3=window.setTimeout(function(){},1000); //timer3->3 当前是第三个定时器
なお、タイマーをクリアしても戻り値はクリアされず、後から設定したタイマーの戻り値は戻り値に基づいてキューイングされ続けます。
タイマーをクリアする方法タイマーが時間内にクリアされない場合、メモリ オーバーフローが発生する危険性があります。したがって、タイマーを使用する場合は、適切なタイミングでタイマーをクリアすることを考慮する必要があります。
クリア タイマーには 2 つの関数があります。
- setTimeout の破棄関数は、clearTimeout です。
- setInterval の破棄関数は、次のとおりです。 clearInterval
clearTimeout(id_of_settimeout)
# を介してのみ破棄できます。 ##定義: setTimeout()メソッドで設定したスケジュール実行機能をブロック/キャンセルします。
パラメータ: id_of_settimeout は、setTimeout() 関数を呼び出したときに返される ID 値であり、返された識別子をパラメータとして使用すると、setTimeout() で設定されたスケジュールされた実行操作をキャンセルできます。 注:clearTimeout(id_of_setinterval) メソッドを使用するには、スケジュールされた操作を作成および実行するときにグローバル変数を使用します。var myVar = setTimeout(function(){ alert("Hello"); }, 3000); clearTimeout(myVar);
- 上記のコードは testTimeout を再帰的に呼び出しますが、setTimeout は常に setTimeout オブジェクトを生成します。GC によってリサイクルされますが、時間は不確かです。これはより危険であり、メモリ オーバーフローを引き起こす可能性があります。
function testTimeout () { console.log('1111') console.log(setTimeout(testTimeout, 3000)); }
ログイン後にコピー
var timeHandle = null; function testTimeout () { if (timeHandle) { // 调用之前,先清理,防止一直生成对象 // ps. setInterval 定时器也应该按这种模式处理 clearTimeout(timeHandle); timeHandle = null; } console.log('1111'); console.log(timeHandle = setTimeout(testTimeout, 3000)); }
clearInterval(id_of_setinterval)
定義: setInterval()関数で設定したスケジュール実行操作をキャンセル/停止できます。
パラメータ: id_of_setinterval は、setInterval() 関数を呼び出したときに返される ID 値であり、返された識別子をパラメータとして使用することによってのみ、setInterval() で設定されたスケジュールされた実行操作をキャンセルできます。 注: clearInterval() メソッドを使用するには、スケジュールされた操作を作成および実行するときにグローバル変数を使用します。var myVar = setInterval(function(){ myTimer() }, 1000); clearInterval(myVar);
- 上記のコードは testInterval を再帰的に呼び出しますが、setInterval は常に setInterval オブジェクトを生成します。GC によってリサイクルされますが、時間は不確かです。これはより危険であり、メモリ オーバーフローを引き起こす可能性があります。
function testInterval () { console.log('1111') console.log(setInterval(testInterval, 3000)); }
ログイン後にコピー
var timeHandle = null; function testInterval () { if (timeHandle) { // 调用之前,先清理,防止一直生成对象 clearInterval(timeHandle); timeHandle = null; } console.log('1111'); console.log(timeHandle = setInterval(testInterval, 3000)); }
拡張知識: setTimeout を使用して setInterval の動作をシミュレートする
通常: setTimeOut() を再帰的に使用すると、その効果は setInterval() を使用した場合と同等になります
利点: コードの簡素化- 非同期キューの関数呼び出しシーケンスの正確性を確保します。setInterval の欠陥により、大量のデータが含まれるため、非同期キュー内の関数呼び出しの実行順序が狂うことがあります。たとえば、この関数の実行が終了する前に、次の関数の実行が開始されますが、再帰ではありません。再帰とは、関数の次のエンティティがスタック領域に再帰的に作成され、現在の関数が実行された後に呼び出されることを意味します。
- [関連する推奨事項: JavaScript ビデオ チュートリアル 、
//实现的方法挺简单的 ,如下代码 //参数: 毫秒 需要执行的方法 function console1() { console.log(111); if(timer){ clearTimeout(timer); } timer = setTimeout(function(){ console1(); }, 3000); } console1()
ログイン後にコピーWeb フロントエンド ]
以上がES6でタイマーをクリアする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

ES6 では、配列オブジェクトの reverse() メソッドを使用して、配列の反転を実現できます。このメソッドは、配列内の要素の順序を逆にして、最後の要素を最初に、最初の要素を最後に配置するために使用されます。構文「array」 。逆行する()"。 reverse() メソッドは元の配列を変更します。変更したくない場合は、拡張演算子 "..." とともに使用する必要があり、構文は "[...array].reverse() 」。

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

手順: 1. 構文 "newA=new Set(a); newB=new Set(b);" を使用して、2 つの配列をそれぞれセット型に変換します; 2. has() と filter() を使用して差分セットを検索します、構文 " new Set([...newA].filter(x =>!newB.has(x)))" では、差分セット要素がセット コレクションに含まれて返されます。 3. 配列を使用します。 from セットを配列に変換するタイプ、構文は「Array.from(collection)」です。

es5 では、for ステートメントと IndexOf() 関数を使用して配列の重複排除を実現できます。構文 "for(i=0;i<配列長;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}」。 es6 では、スプレッド演算子 Array.from() および Set を使用して重複を削除できます。まず配列を Set オブジェクトに変換して重複を削除してから、スプレッド演算子または Array.from() 関数を使用する必要があります。 Set オブジェクトを配列に変換してグループ化するだけです。

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

いいえ、require は CommonJS 仕様のモジュール構文であり、es6 仕様のモジュール構文は import です。 require は実行時にロードされ、import はコンパイル時にロードされます。require はコード内のどこにでも記述できます。import はファイルの先頭にのみ記述でき、条件文や関数スコープでは使用できません。モジュール属性は導入されるだけです。 require を実行した場合、そのためパフォーマンスは比較的低くなりますが、インポート コンパイル中に導入されたモジュールのプロパティのパフォーマンスはわずかに高くなります。

地図は注文済みです。 ES6 のマップ タイプは、多くのキーと値のペアを格納する順序付きリストです。キー名と対応する値はすべてのデータ型をサポートします。キー名の等価性は、「Objext.is()」メソッドを呼び出すことによって決定されます。 , したがって、数字の 5 と文字列「5」は 2 つのタイプとして判断され、プログラム内で 2 つの独立したキーとして現れることができます。
