arrayname.forEach( function(element){ });

arrayname.forEach( function(element){ });

本文关键字:element forEach function arrayname      更新时间:2023-09-26

我已经成功填充了一个包含字符串元素的数组。

我最近学习了JavaScript的forEach()

arrayname.forEach( 
  function(element){
     // some statements
  }
);

我怎样才能使它工作,使"一些语句"每三秒钟只运行一次?我尝试了setInterval和setTimeOut,但它没有给我想要的结果。由于

我也试过了

 arrayname.forEach( function(element){ }).delay(3000);

但是它仍然没有给我我想要的结果。(

这个函数会做到这一点-它值得尽可能避免setInterval -它有问题,它不能保证调用之间至少delay,特别是如果先前的调用已经排队(可能是因为窗口失去焦点):

function forEachWithDelay(arr, callback, delay, thisArg) {
    var index = 0, count = arr.length;
    (function loop() {
        if (index < count) {
            callback.call(thisArg, arr[index], index, arr); // same as .forEach
            ++index;
            setTimeout(loop, delay);
        }
    })();  // start the loop immediately
 }

用法:

forEachWithDelay(arrayname, function(element, index) {
     // do something
}), 3000);

注意:这将以延迟开始第一个元素的循环。

var arr = ["Microsoft", "Google", "Apple"];
var i = 0;
function loop() {
    alert( arr[i] );
    i++;
    if( i < arr.length ){
        setTimeout( loop, 3000 );
    }
};
loop();

这可能是你想要的:

var i=0;
var loop = setInterval(function(){
    if(i < arrayname.length){
        console.log(arrayname[i]);
        i++;
    }else{
        clearInterval(loop);
    }
},3000);

方法如下:

var index = 0;
var t = setInterval(function() {
  console.log(arrayname[index++]);
  if (index === arrayname.length) {
    clearInterval(t);
  }
}, 3000);

试试这个:

 $(document).ready(function () {
  var array = ["first","second","third","fourth"];
  var arr_length = array.length;
  var index = 0;
  callTime();
  function callTime(){
    setTimeout(function(){
        index++;
        if(index < arr_length){
            callTime();
        } 
    },1000);
  }
 });