1

メソッド[ .show()および.retrieve() ]を使用して事前に作成されたクラス[ Msg ]があります。メソッド'.show()'は、順序付けされていないリストの最後のリスト項目としてブラウザにメッセージを表示します。メソッド'.retrieve()'は、サーバーから有限量のメッセージを取得します。唯一のパラメータとしてコールバックメソッドを取ります。文字列の配列を渡します。配列内の各文字列には、1つのメッセージが含まれています。私は次のコードを持っています:

JS:

 Msg.retrieve(function(array) {
      for (var i = 0; i < array.length; i++) {
           Msg.show(array[i]); 
      }
 });

 // The code outputs all the messages to the screen at once as a bunch of list items. 

5秒ごとに1つのメッセージを出力するにはどうすればよいですか?JavascriptのsetInterval()メソッドの使い方がわかりません。

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

2
var interval = setInterval(function() {
    Msg.show(array[i])
    i++
    if (i >= array.length) clearInterval(interval)
}, 5000)

setInterval関数と時間を引数として取ります。

clearIntervalを使用して間隔をクリアすることもできます。

于 2013-03-20T23:15:58.170 に答える
2

取得後、タイマーを設定し、一度に 1 つの値で配列をシフトします。

Msg.retrieve(function(array) {
     var timer = setInterval(function() {
         if(array.length) {
             Msg.show(array.shift()); 
         } else {
             // All messages displayed, array is empty
             clearInterval(timer);
         }
     }, 5000);
});
于 2013-03-20T23:16:57.203 に答える
1
function makeArrayPrinter(arr, delayMillis) {
  var i=0;
  return function printer() {
    if (i < arr.length) {
      console.log(arr[i++]);
      setTimeout(printer, delayMillis);
    }
  }
}

var f = makeArrayPrinter([1, 2, 3, 4, 5], 5000);
f();
于 2013-03-20T23:19:23.290 に答える