2017-08-31 6 views
-1

setTimeout関数を配列にプッシュします.I console.log(arr)の場合、arrの値は整数です。誰でも私のためにそれを説明することができます!ありがとう!コードは次のようになります。関数を配列にプッシュします。なぜ配列の値は整数ですか?

var arr=[]; 
arr.push(
setTimeout(function(){ 
$(selector).text(something); 
}); 
); 
console.log(arr); // [2] 

また、関数を配列にプッシュする目的はわかりません。誰も私にそれを手伝ってもらえますか?前もって感謝します!

+2

関数を配列にプッシュしているわけではありません。 ** setTimeout()を呼び、**戻り値**を配列にpushしています。 – Pointy

+0

あなたは関数をプッシュしないでください。あなたはsetTimeoutハンドルを押します。 – Keith

+0

'setTimeout()'の戻り値は整数なので? https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout ''関数を配列にプッシュする目的はわかりません! ' - あなたが関数の配列、あなたはちょうどそれを行うことができます。しかし、それはこのコードがやっていることではありません。 – David

答えて

0

タイムアウトIDを返すのsetTimeout、場合にあなたがそのタイムアウトを停止したいので、もう一度、あなたはclearTimeout(id)を使ってそれを行うことができます。

配列内の関数をプッシュしませんが、関数の実行結果(この場合はsetTimeoutによって生成されるタイムアウトID)を押します。

私はなぜそれを配列にプッシュするのか分かりません。開発者はそれを知っておくべきです....!?

+0

ありがとうございます!私が配列でそれをプッシュする理由は、後でclearTimeout()を使うことです! –

2

問題は、配列に入れている値が、setTimeout()から返されるタイマーの識別子であるためです。これは整数になります。 ではなく、入力を含むjQueryオブジェクトです。

var arr = []; 
setTimeout(function() { 
    arr.push($(selector).text(something)); 
    console.log(arr); 
}, 1000); 
+0

$(セレクタ).text(something)はセレクタのテキストを変更し、それをなぜ配列内にプッシュしていますか? –

+0

これは、選択したオブジェクトを保持するjQueryオブジェクトを返します。後で使用するためにオブジェクト参照を配列に格納したい場合は有効ですが、後でOPで正確に何をしたいのか明確ではありません –

0

私はあなたがいない

、配列にsetTimeout関数をプッシュ:あなたはpush()内部setTimeout()あるように、あなたのロジックを再配置する必要が

。配列にsetTimeout関数を呼び出す結果(戻り値)をプッシュします。

また、私はあなたには、いくつかの指標の値に応じて機能を呼び出すこともできます、またはあなたが作成している。例えば

ARRAに機能を押すその目的​​を理解していませんスタック、または実行される操作の待ち行列。

0

最良の方法は、あなたがオブジェクトのキーに機能を関連付けることができる場所objectsを使用することです:

var obj={}; 
 
obj.testFn = function(){ 
 
    setTimeout(function(){ 
 
    alert('invoked'); 
 
    //$(selector).text(something); 
 
    },2000); 
 
} 
 

 
obj.testFn(); 
 
console.log(obj);

関連する問題