如何重复此功能

时间:2017-07-24 16:39:50

标签: javascript infinite-loop

我有这个功能,我需要它从一开始就重复一次。

processSlider: function() {
    function a() {
        var c = document.querySelector(".layout-process-slider .process-point.active");
        if (!c.nextElementSibling) {
            $(".layout-process-slider .process-point").first().trigger("click")
        } else {
            $(".layout-process-slider .process-point.active").next().trigger("click")
        }
    }
    if ($(".layout-process-slider").length) {
        var b = setInterval(a, 2500)
    }
    $(".layout-process-slider .process-point").click(function(d) {
        var c = $(this).data("select");
        $(this).siblings().removeClass("active");
        $(this).addClass("active");
        $(this).parent().parent().find(".items").children().removeClass("active");
        $(this).parent().parent().find('.item-info[data-item="' + c + '"]').addClass("active");
        if (d.originalEvent !== undefined) {
            window.clearInterval(b)
        }
    })
}

如何在结束后循环播放?

1 个答案:

答案 0 :(得分:2)

通常,您希望使用recursion

为你的函数命名,并在它到达结束时让它自己调用。

function f() {
 // ...
 f(); // <-- recurse
}

所以在你的情况下,这样的事情会起作用:

processSlider: function processSlider() {
  //                    ^ give it a name (doesn't have to be the same as the property to the left)
  // ...
  processSlider(); // <-- recurse
}

一个重要的警告是确保你有一个递归基本案例来阻止函数无限期地运行(除非你真的希望它永远运行)。

processSlider: function processSlider() {
  // ...

  if (! /* whatever your base case is */) {
    processSlider(); // <-- recurse only if base case is false
  }
}