Javascript 如何从使用settimeout的函数返回值?

Javascript 如何从使用settimeout的函数返回值?,javascript,jquery,asynchronous,settimeout,Javascript,Jquery,Asynchronous,Settimeout,在这种情况下,我需要通过调用函数返回一个值。 情况如下: 单击dom元素 使用setTimeout()等待另一个元素消失(进程结束的标志) 然后获取值并返回 关键是我能够通过回调或嵌套函数实现所需的点,我可以提醒或分配给某个全局变量。 但是我需要从函数返回它,因为它将从C#HtmlDocument invokeScript()方法调用 下面是一个示例代码: function getValue() { $('#myElement').click(); return waitFo

在这种情况下,我需要通过调用函数返回一个值。 情况如下:

  • 单击dom元素
  • 使用setTimeout()等待另一个元素消失(进程结束的标志)
  • 然后获取值并返回
关键是我能够通过回调或嵌套函数实现所需的点,我可以提醒或分配给某个全局变量。 但是我需要从函数返回它,因为它将从C#HtmlDocument invokeScript()方法调用

下面是一个示例代码:

function getValue() {
    $('#myElement').click();
    return waitFor();
}
function waitFor() {
    if($('#another').hasClass('active')) {
        setTimeout(function() {waitFor();}, 100);
    } else {
        // alert ($('#desiredValue').text());
        return $('#desiredValue').text();
    }
}
getValue();

如果您正在使用CSS转换(我假设您是因为您正在删除一个类,并且我假设删除这个类会导致元素随着时间的推移“消失”),那么您可以侦听
transitionend
事件:

someElement.addEventListener('transitionend', doSomething, false);

function doSomething() {
  // make something cool happen once the animation is complete
}

是否要求从
waitFor
返回
$(“#desiredValue”).text()
?是否可以在问题中包含
html
?请再解释一下,哪些函数将在超时时间内运行?获取价值?等待?要返回哪个值?不能从setTimeout调用的函数返回值。@bhspencer“不能从setTimeout调用的函数返回值。”
jQuery.Deferred()
可以从
setTimeout
内的
waitFor
返回值?@ArmanGalyan可以描述
getValue
waitFor
的预期返回值?“如果使用CSS转换”注意,
animationand
事件不同于
transitionnd
event@guest271314啊对,谢谢你纠正这一点。我已经编辑了我的答案。我假设invokeScript是同步的。如果是这样,那么$('#other').hasClass('active')将返回false,那么您将需要多次调用invokeScript。