Javascript 设置超时和滚动的问题

Javascript 设置超时和滚动的问题,javascript,html,scroll,settimeout,Javascript,Html,Scroll,Settimeout,我对编码有点陌生,我可能愚蠢地决定给我的朋友做一个选择你自己的冒险游戏作为生日礼物。简而言之,我遇到了一个问题,需要一个时间延迟,以便用户有时间阅读文本并向下滚动页面,因为否则窗口不会滚动。最后,我尝试使用.settimeout创建set delay,但问题是settimeout之后的代码本身会在发生这种情况时运行,从而导致用户排序的死胡同。看起来是这样的: //A bunch of text and story up here window.setTimeout( function

我对编码有点陌生,我可能愚蠢地决定给我的朋友做一个选择你自己的冒险游戏作为生日礼物。简而言之,我遇到了一个问题,需要一个时间延迟,以便用户有时间阅读文本并向下滚动页面,因为否则窗口不会滚动。最后,我尝试使用.settimeout创建set delay,但问题是settimeout之后的代码本身会在发生这种情况时运行,从而导致用户排序的死胡同。看起来是这样的:

  //A bunch of text and story up here 

  window.setTimeout( function () { 'prompt to get variable for if statement' }, delay );

  if(true)
    { //code to run}
  else
   {//code to run}
接下来是几个其他提示及其相应的if/else语句


我假设代码在延迟发生时正在运行,我想知道是否存在更好的方法来实现这一点。我知道Javascript中没有暂停功能,但我认为必须有某种方法允许用户在弹出另一个提示之前向下滚动。谢谢。

if-else语句将立即运行。您应该将其放入setTimeout函数中,如下所示:

//A bunch of text and story up here 

window.setTimeout( function () {
  //do some magic



  if(true)
    { //code to run}
  else
   {//code to run}
}, delay );
试试这个:

var donext = false;
window.setTimeout( function() {
  donext = true;
}, delay);

if(donext)
{ //code to run}
else
{ //code to run}

setTimeout计划调用在将来某个时间发生。它不是一个让JavaScript等待的函数,它的作用正好相反,让JavaScript立即继续,而不管运行的代码是否超时。事实上,您的下一行保证不能依赖已运行的超时代码,因为它还没有,它最早可以运行的时间是在计划的代码完成时。