setTimeout()多个JQuery实例

时间:2015-02-11 09:30:55

标签: javascript jquery delay settimeout

所以我在JQuery中有大约10行代码块。这些线都是独立的,当我执行它们时(我只是在控制台中键入它们,它是一个自动测试)我需要它们彼此延迟,比如2秒的差异。我开始在每一行使用JavaScript setTimeout(),但是对于10行独立的代码,我假设有一种更性感的方式...而JQuery DELAY也不起作用,因为它们不是效果。有任何想法吗?这是我的代码块的一般概念..

$("#tag1").trigger("click");

$('#tag2').val("some text");

$("#tag3").trigger("keyup");

$('#tag4 select option[value="4"]').prop('selected',true);

$("#tag5").val(6);

$('#tag6').val(3).change();

$('#tag7').val(30).change();

$('#tag8').val("2017-06-29");

$('#tag9').val("2015-06-29");

$('#tag10').val("This is the test tasks' description.");

$(".id1").trigger("click");

$(".id2").val("buy oranges");

正如您所看到的,所有标签和ID都是独一无二的...... 任何想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

从我的评论:一系列匿名函数将是一个选项。递归传递给一个使用setTimeout的函数每次切掉第一个..

e.g。像这样的东西(测试只是将函数打印到控制台,因为缺少DOM元素):

JSFiddle: http://jsfiddle.net/bnq6tppb/1/

var operations = [
    function () {
        $("#tag1").trigger("click");
    },
    function () {
        $('#tag2').val("some text");
    },
    function () {
        $("#tag3").trigger("keyup");
    },
    function () {
        $('#tag4 select option[value="4"]').prop('selected', true);
    },
    function () {
        $("#tag5").val(6);
    },
    function () {
        $('#tag6').val(3).change();
    },
    function () {
        $('#tag7').val(30).change();
    },
    function () {
        $('#tag8').val("2017-06-29");
    },
    function () {
        $('#tag9').val("2015-06-29");
    },
    function () {
        $('#tag10').val("This is the test tasks' description.");
    },
    function () {
        $(".id1").trigger("click");
    },
    function () {
        $(".id2").val("buy oranges");
}];

并使用计时器递归使用:

function processoperations(ops){
    // Run the first operation
    ops[0]();
    setTimeout(function(){
        if (ops.length > 1){
            // Go recursive after 2 seconds
            processoperations(ops.slice(1));
        }
    }, 2000);
}

从这样开始:

processoperations(operations);

这允许您每隔一段时间处理任何代码。替代方案(如其他人提到的)是一个自动化测试工具(如Selenium)如果这实际上是一个测试问题。更新:您已经提到不允许使用Selenium。