Javascript代码没有按顺序运行
Halcyon在这里帮助了循环-但是在循环完成之前,有没有办法停止后续代码的运行: 当我运行下面的代码时,我会在scrollDown函数运行之前收到输入我的姓名的提示,但在scrollDown代码之后会收到输入提示:Javascript代码没有按顺序运行,javascript,Javascript,Halcyon在这里帮助了循环-但是在循环完成之前,有没有办法停止后续代码的运行: 当我运行下面的代码时,我会在scrollDown函数运行之前收到输入我的姓名的提示,但在scrollDown代码之后会收到输入提示: 函数向下滚动(num\u次){ num_次-=1; 如果(num_次===0){ 返回; } scrollBy(0500);//水平和垂直滚动增量 setTimeout(函数(){ 向下滚动(num_次); }, 500); } //这应该首先运行并在提示之前滚动屏幕 向下滚动(
函数向下滚动(num\u次){
num_次-=1;
如果(num_次===0){
返回;
}
scrollBy(0500);//水平和垂直滚动增量
setTimeout(函数(){
向下滚动(num_次);
}, 500);
}
//这应该首先运行并在提示之前滚动屏幕
向下滚动(30);//向下滚动30次
//但是,在运行上述代码之前会出现此提示
var kw=提示(“请输入您的姓名”)代码>将代码放入上次滚动迭代后运行的回调中
函数向下滚动(num\u次,回调){
如果(num_次===0){
回调();
}
scrollBy(0500);//水平和垂直滚动增量
setTimeout(函数(){
向下滚动(num_times-1,回调);
}, 500);
}
//这应该首先运行并在提示之前滚动屏幕
向下滚动(30,函数(){
kw=提示(“请输入您的姓名”);
document.getElementById(“结果”).textContent=kw;
}
); // 向下滚动30次
您的名字是:
@failedunitest:No,除非另有说明,否则JavaScript中的代码是同步运行的。Promise回调和setTimeout回调都是“另外声明”的类型。是的,你是对的。出于某种原因,我想到了ajax调用。您可能需要在提示符周围使用标志,类似于本问题中的:
var kw;
function scrollDown(num_times) {
if (num_times === 0) {
/* you can define your prompt after scrollDown has ended */
kw = prompt("Please enter your name");
return;
}
window.scrollBy(0, 500);
setTimeout(function() {
scrollDown(num_times - 1);
}, 500);
}
scrollDown(30);