停止 setInterval 直到未执行操作?

Stop setInterval until action not performed?

我们是否可以停止 setInterval 意味着下一个间隔将仅在第一个事件完成时调用。

我只想在上一张图片时加载下一张图片 loaded.This 事件应该只在鼠标后工作 over.But 如果下一张图片尺寸很大,那么在我的情况下下一个间隔正在调用..我想要停止间隔,直到最后一张图片未加载。

这是我的代码:

jQuery('.product').on('mouseover', function(){
    timer = setInterval(function() {
        if (counter === product_images.length) {
            counter = 0;
        }

        // selector.addClass('hidden');
        loading_image.removeClass('hidden');
        selector.attr('src', 'localhost/product/' + product_images[counter]);
        var loadImage = new Image();
        loadImage.src = selector.attr('src');
        loadImage.onload = function() {console.log('after load');
        loading_image.addClass('hidden');
        // selector.removeClass('hidden');
        selector.show();
    };
    counter = counter + 1;
}, 1000);

我们如何停止 setInterval 或阻止它进入下一个间隔,即使最后一个间隔的任务不是 completed.Not clearInterval,如果第一个任务完成,它应该继续(setInterval)。

请帮帮我

试试下面的代码。这可能有用,

var flag = 1;
jQuery('.product').on('mouseover', function(){
    if(typeof timer != "undefined")
        clearInterval(timer);
    timer = setInterval(function() {
        if(flag){
            if (counter === product_images.length) {
                counter = 0;
            }
            loading_image.removeClass('hidden');
            selector.attr('src', 'localhost/product/' + product_images[counter]);
            flag = 0;
            var loadImage = new Image();
            loadImage.src = selector.attr('src');
            loadImage.onload = function() {
                console.log('after load');
                loading_image.addClass('hidden');
                selector.show();
                flag = 1;
            };
            counter = counter + 1;
        }
}, 1000);

注意:我没有测试过这段代码。