使用setTimeout函数提示值

时间:2014-03-24 10:39:28

标签: javascript

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

但这并没有带来任何价值。请告诉我有什么问题?

3 个答案:

答案 0 :(得分:0)

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

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

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

像jQuery的延迟对象之类的东西将是你在这里修复的最佳途径,但我不知道jQuery是否适合你。

答案 1 :(得分:0)

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

看看这里同步使用:using setTimeout synchronously in JavaScript

答案 2 :(得分:0)

由于您使用异步操作拨号,因此最简单的方法是使用回调函数。例如:

alertWithoutNotice(function(label) {
    alert(label)
});

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

因此,请注意,alertWithoutNotice可用时会通知label。当它发生时,会调用回调。