2

我如何构建评论所展示的功能?

// for(x=0;x<10;x++)
$('a[attr*="unique"]:first').attr('id', 'mysuperid1');
document.getElementById("mysuperid1").click();
// delay

$("span:contains(action)").parent().click();
// delay

$jq("a:contains(action)").attr('id', 'mysuperid2');
document.getElementById("mysuperid2").click();
// delay

$('input[value="action"]').attr('id', "mysuperid3");
document.getElementById("mysuperid3").click();
// delay

// back to the top of loop

(名称和选择/搜索词已被修改)

我认为的问题就像在这里找到的问题http://darklaunch.com/2011/05/21/javascript-for-loop-using-settimeout-to-pass-argument但我不知道如何推断什么由于我不是 javascript 开发人员,因此在该链接上被教导包含多个延迟。

这是一个机器人,它将为我自动执行一些网络任务。

非常感谢

4

2 回答 2

1

也许您可以将这种方法用作模板,然后将所有任务划分为各自的功能。

var delay = 1000;

function beginTasks(){
    taskOne();
}

function taskOne(){
    // Do something
    window.setTimeout(function(){
        taskTwo();
    }, delay);
}

function taskTwo(){
    // Do something else
    window.setTimeout(function(){
        beginTasks(); // <-- back to start
    }, delay);
}
于 2012-08-09T14:52:46.843 回答
0

您不能在 Javascript 中执行“睡眠”操作。

但是,您可以使用也可用于浏览器的异步节点模块,它会为您提供一些不错的异步语法包装器,以帮助您处理诸如 setTimeout 之类的异步函数。

您的代码应类似于:

async.whilst( function ( ) {
    /* condition */
}, function ( whilstCallback ) {
    async.series( [
        function ( seriesCallback ) { /* action 1 */ seriesCallback( ); },
        window.setTimeout.bind( window, 1000 ),
        function ( seriesCallback ) { /* action 2 */ seriesCallback( ); },
        window.setTimeout.bind( window, 1000 ),
        /* ... */
    ], whilstCallback );
} );
于 2012-08-09T14:54:33.287 回答