var label = prompt('Label for Vertical Line');
此代码返回我在提示字段中输入的label
中的值。但我希望有一些时间延迟来获得提示值。
我正在使用此代码:
var label=alertWithoutNotice();
function alertWithoutNotice(){
var lab;
setTimeout(function(){
lab=prompt('Label for Vertical Line');
}, 1200);
return lab;
}
但这并没有带来任何价值。请告诉我有什么问题?
答案 0 :(得分:0)
这是一个按时间顺序排列的问题。 setTimeout
计划异步事件。这意味着,在运行之前,脚本的其余部分将继续执行。
结果是在超时回调触发之前执行了return lab
行。等等返回时,lab
在此时未定义。
因此,您不能从异步事件返回值,或者至少没有意义。
像jQuery的延迟对象之类的东西将是你在这里修复的最佳途径,但我不知道jQuery是否适合你。
答案 1 :(得分:0)
问题是你在进入内部超时之前返回值,因为setTimeout函数是异步的。
答案 2 :(得分:0)
由于您使用异步操作拨号,因此最简单的方法是使用回调函数。例如:
alertWithoutNotice(function(label) {
alert(label)
});
function alertWithoutNotice(callback) {
setTimeout(function() {
callback(prompt('Label for Vertical Line'));
}, 1200);
}
因此,请注意,alertWithoutNotice
可用时会通知label
。当它发生时,会调用回调。