循环中的多个Javascript延迟
如何构建注释所示的功能循环中的多个Javascript延迟,javascript,jquery,loops,delay,settimeout,Javascript,Jquery,Loops,Delay,Settimeout,如何构建注释所示的功能 // 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', 'mysuperid
// 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
//for(x=0;x也许您可以将此方法用作模板,然后将所有任务划分为各自的函数
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);
}
var延迟=1000;
函数beginTasks(){
taskOne();
}
函数taskOne(){
//做点什么
setTimeout(函数(){
任务二();
},延误);
}
函数taskTwo(){
//做点别的
setTimeout(函数(){
beginTasks();//不能在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 );
} );
看看jQuery的