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);
}