Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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/opengl/4.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函数提示一个值_Javascript - Fatal编程技术网

Javascript 使用setTimeout函数提示一个值

Javascript 使用setTimeout函数提示一个值,javascript,Javascript,此代码返回我在提示字段中输入的标签中的值。但是我需要一些时间延迟来获得提示值 我正在使用以下代码: var label = prompt('Label for Vertical Line'); 但这不会返回任何值。请告诉我怎么了?这是一个按时间顺序排列的问题设置超时计划一个异步事件。这意味着,在它运行之前,脚本的其余部分将继续执行 结果是在触发超时回调之前执行return lab行。因此在返回时,lab在该点未定义 因此,不能从异步事件返回值,或者至少没有意义 类似jQuery的延迟对象可能是

此代码返回我在提示字段中输入的
标签中的值。但是我需要一些时间延迟来获得提示值

我正在使用以下代码:

var label = prompt('Label for Vertical Line');

但这不会返回任何值。请告诉我怎么了?

这是一个按时间顺序排列的问题<代码>设置超时
计划一个异步事件。这意味着,在它运行之前,脚本的其余部分将继续执行

结果是在触发超时回调之前执行
return lab
行。因此在返回时,
lab
在该点未定义

因此,不能从异步事件返回值,或者至少没有意义


类似jQuery的延迟对象可能是您在这里进行修复的最佳途径,但我不知道jQuery是否适合您。

问题是,您在进入超时之前返回值,因为setTimeout函数是异步的


看看这里的同步使用:

因为您是使用异步操作拨号,所以这里最简单的方法是使用回调函数。例如:

var label=alertWithoutNotice();
function alertWithoutNotice(){
    var lab;
    setTimeout(function(){
        lab=prompt('Label for Vertical Line');
    }, 1200);
    return lab;
}

因此,可以认为,
label
可用时会通知
alertwithout notice
。当调用回调时。

函数在返回lab后由setTimeout执行,那么我该怎么办?您能给我正确的代码吗?您需要将使用lab的行为链接到给定给setTimeout的函数的末尾。如何使用setTimeout函数获取提示值?您已经得到了提示值;只是因为我说过的原因,你不能回来。您当前的模式没有简单的修复方法;您的脚本将继续运行,但没有
lab
的值,因为在回调启动之前它没有值。好的,明白了…但是如何将
标签
值存储在变量中?您需要完全更改方法。如果您有异步代码,将其存储在变量中是没有意义的。使用回调。
alertWithoutNotice(function(label) {
    alert(label)
});

function alertWithoutNotice(callback) {
    setTimeout(function() {
        callback(prompt('Label for Vertical Line'));
    }, 1200);
}