Javascript代码没有按顺序运行

Javascript代码没有按顺序运行,javascript,Javascript,Halcyon在这里帮助了循环-但是在循环完成之前,有没有办法停止后续代码的运行: 当我运行下面的代码时,我会在scrollDown函数运行之前收到输入我的姓名的提示,但在scrollDown代码之后会收到输入提示: 函数向下滚动(num\u次){ num_次-=1; 如果(num_次===0){ 返回; } scrollBy(0500);//水平和垂直滚动增量 setTimeout(函数(){ 向下滚动(num_次); }, 500); } //这应该首先运行并在提示之前滚动屏幕 向下滚动(

Halcyon在这里帮助了循环-但是在循环完成之前,有没有办法停止后续代码的运行:

当我运行下面的代码时,我会在scrollDown函数运行之前收到输入我的姓名的提示,但在scrollDown代码之后会收到输入提示:

函数向下滚动(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);