Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setTimeout JS的执行顺序_Javascript - Fatal编程技术网

Javascript setTimeout JS的执行顺序

Javascript setTimeout JS的执行顺序,javascript,Javascript,我试图从一个用timeout方法执行的函数中定义一个全局变量值。我现在面临的问题是无法摆脱时间间隔 ***不起作用(但我希望目标变量在外部,以便以后可以访问它) ****正在工作(但我不想从setTimeout访问它) 任何新的想法或比我做的更好的方法 您无法从传递给setTimeout的函数中获取返回值 对于您想做的事情,可以写为: function demo() { var noOfGoals = 4; return goal = "He has scored " + noOfGoa

我试图从一个用timeout方法执行的函数中定义一个全局变量值。我现在面临的问题是无法摆脱时间间隔

***不起作用(但我希望目标变量在外部,以便以后可以访问它)

****正在工作(但我不想从setTimeout访问它)


任何新的想法或比我做的更好的方法

您无法从传递给setTimeout的函数中获取返回值

对于您想做的事情,可以写为:

function demo() {
  var noOfGoals = 4;
  return goal = "He has scored " + noOfGoals + " in 45 Mins"; 
}


function launch_goal () { 
    setTimeout(function() {
        console.log(demo());
    }, 2000);
}  
launch_goal(); 

或者用另一种方法,你需要使用承诺

你能解释一下你真正想要实现什么吗?我还不明白这一点……您必须在函数中使用
return
来调度函数,以便以后执行。它立即返回,然后
console.log()
尝试访问一个尚未设置的变量(
goal
)。@为什么?我希望“goal”是一个全局变量,可以在程序中的任何地方访问,但我也无法摆脱timeInterval函数。。有什么想法吗?这个解决方案与OP已经拥有并且不喜欢的解决方案有何不同?他不是通过setTimeout访问的
function demo() {
  var noOfGoals = 4;
  goal = "He has scored " + noOfGoals + " in 45 Mins"; 
}

setTimeout(function() {
  demo();
  console.log(goal);
}, 2000);
function demo() {
  var noOfGoals = 4;
  return goal = "He has scored " + noOfGoals + " in 45 Mins"; 
}


function launch_goal () { 
    setTimeout(function() {
        console.log(demo());
    }, 2000);
}  
launch_goal();