2017-07-06 20 views
-1

10ループごとに1分または2分待つことはできますか?例えばJavascript - 10ループごとに1分間待機しますか?

、これは私の作業コードです:

var dates = ["2016-08-31T23:00:00.000Z","2016-09-01T23:00:00.000Z","2016-09-02T23:00:00.000Z","2016-09-03T23:00:00.000Z","2016-09-04T23:00:00.000Z","2016-09-05T23:00:00.000Z","2016-09-06T23:00:00.000Z","2016-09-07T23:00:00.000Z","2016-09-08T23:00:00.000Z","2016-09-09T23:00:00.000Z","2016-09-10T23:00:00.000Z","2016-09-11T23:00:00.000Z","2016-09-12T23:00:00.000Z","2016-09-13T23:00:00.000Z","2016-09-14T23:00:00.000Z","2016-09-15T23:00:00.000Z","2016-09-16T23:00:00.000Z","2016-09-17T23:00:00.000Z","2016-09-18T23:00:00.000Z","2016-09-19T23:00:00.000Z","2016-09-20T23:00:00.000Z","2016-09-21T23:00:00.000Z","2016-09-22T23:00:00.000Z","2016-09-23T23:00:00.000Z","2016-09-24T23:00:00.000Z","2016-09-25T23:00:00.000Z","2016-09-26T23:00:00.000Z","2016-09-27T23:00:00.000Z","2016-09-28T23:00:00.000Z","2016-09-29T23:00:00.000Z","2016-09-30T23:00:00.000Z","2016-10-01T23:00:00.000Z"]; 

var counter = 0; 

// Loop the dates and convert them to this format: yyyy-m-d 
dates.forEach(function(date, index) { 
    counter ++; 

    console.log(date); 

    // Reset when you reach 10 counts. 
    if (counter === 10) { 
     counter = 0; 
    } 

    // Wait for 2 minute before the next 10 loop. 
    setTimeout(function() { 
     // 
    }, 120000); 
}); 

それは可能ですか?何か案は?

EDIT:

私は何をした後、午前:

2016-08-31T23:00:00.000Z 
2016-09-01T23:00:00.000Z 
2016-09-02T23:00:00.000Z 
2016-09-03T23:00:00.000Z 
2016-09-04T23:00:00.000Z 
2016-09-05T23:00:00.000Z 
2016-09-06T23:00:00.000Z 
2016-09-07T23:00:00.000Z 
2016-09-08T23:00:00.000Z 
2016-09-09T23:00:00.000Z 

(wait for 2 minute here) 

2016-09-10T23:00:00.000Z 
2016-09-11T23:00:00.000Z 
2016-09-12T23:00:00.000Z 
2016-09-13T23:00:00.000Z 
2016-09-14T23:00:00.000Z 
2016-09-15T23:00:00.000Z 
2016-09-16T23:00:00.000Z 
2016-09-17T23:00:00.000Z 
2016-09-18T23:00:00.000Z 
2016-09-19T23:00:00.000Z 

(wait for 2 minute here) 

2016-09-20T23:00:00.000Z 
2016-09-21T23:00:00.000Z 
2016-09-22T23:00:00.000Z 
2016-09-23T23:00:00.000Z 
2016-09-24T23:00:00.000Z 
2016-09-25T23:00:00.000Z 
2016-09-26T23:00:00.000Z 
2016-09-27T23:00:00.000Z 
2016-09-28T23:00:00.000Z 
2016-09-29T23:00:00.000Z 

(wait for 2 minute here) 

2016-09-30T23:00:00.000Z 
2016-10-01T23:00:00.000Z 
+0

? – JeffUK

+0

'counter'変数はどこに定義されていますか、それは何の値ですか? – Ionut

+0

@Ionut私の質問が更新されました。ありがとう。 – laukok

答えて

1

setIntervalと内部ではforのループを使用して、各間隔で10ずつ増やすことができます。あなたはこのコードを実行するとどうなり

var dates = ["2016-08-31T23:00:00.000Z", "2016-09-01T23:00:00.000Z", "2016-09-02T23:00:00.000Z", "2016-09-03T23:00:00.000Z", "2016-09-04T23:00:00.000Z", "2016-09-05T23:00:00.000Z", "2016-09-06T23:00:00.000Z", "2016-09-07T23:00:00.000Z", "2016-09-08T23:00:00.000Z", "2016-09-09T23:00:00.000Z", "2016-09-10T23:00:00.000Z", "2016-09-11T23:00:00.000Z", "2016-09-12T23:00:00.000Z", "2016-09-13T23:00:00.000Z", "2016-09-14T23:00:00.000Z", "2016-09-15T23:00:00.000Z", "2016-09-16T23:00:00.000Z", "2016-09-17T23:00:00.000Z", "2016-09-18T23:00:00.000Z", "2016-09-19T23:00:00.000Z", "2016-09-20T23:00:00.000Z", "2016-09-21T23:00:00.000Z", "2016-09-22T23:00:00.000Z", "2016-09-23T23:00:00.000Z", "2016-09-24T23:00:00.000Z", "2016-09-25T23:00:00.000Z", "2016-09-26T23:00:00.000Z", "2016-09-27T23:00:00.000Z", "2016-09-28T23:00:00.000Z", "2016-09-29T23:00:00.000Z", "2016-09-30T23:00:00.000Z", "2016-10-01T23:00:00.000Z"]; 
 
var c = 0 
 
var time = 2000; // 2 sec just for demo 
 

 
function loopDates() { 
 
    for (var i = c; i < c + 10; i++) { 
 
    if (dates[i]) { 
 
     var date = dates[i].slice(0, 10); 
 
     console.log(date) 
 
    } 
 
    } 
 
    c += 10 
 

 
    if (c >= dates.length) clearInterval(x) 
 
} 
 

 
loopDates() 
 
var x = setInterval(loopDates, time)

+0

答えに感謝します。これも最初の10秒で2秒待っていますか? – laukok

+1

@ teelou yep ..... –

+0

cool。最初の10回のループを待たないことは可能ですか? – laukok

1

することで、setTimeout関数内で1分間に1回実行したいん機能を置くようにしてください。あなたが複数回実行したい場合にも、あなたはタイムアウトの時間のための変数を持つことができたsetInterval

setInterval(function() { 
    dates.forEach(function(date, index) { 
     counter ++; 

     // Reset when you reach 10 counts. 
     if (counter === 10) { 
     counter = 0; 
     } 
    } 
}, 120000); 
0

でのsetTimeoutを置き換える必要があります。カウンタが10になったらその値を120000に設定します。そして、settimeoutをIIFE(すぐに呼び出される関数式)の中に入れていることを確認してください。だから特定のインデックスのための時間のためにそれは2分を待つでしょう&は次のインデックスでループを続けます。

+0

どのような例をお願いしますか? – laukok

関連する問題