执行代码但延迟JS中函数的“返回”

时间:2012-01-27 10:34:03

标签: javascript return delay

我是否能够,如果是这样,延迟返回Javascript函数?

例如,假设我使用JS来设置使用CSS3转换的元素的背景,并且该转换需要1秒,我想在转换完成后return函数(1秒后) )。

像这样(伪代码):

function
    element.style = 'background: #aaa; transition: all 1s ease-in;' // this will take 1 second to transition, although the JS is executed immediately

    after 1 second // delay the return until the CSS3 transition completes.
        return element

我希望这一切都有意义!提前谢谢,非常感谢您的帮助!

每个人也可以看到实际的代码:http://jsfiddle.net/BtNSs/1/

3 个答案:

答案 0 :(得分:4)

不,你无法做到这一点。在浏览器中,JavaScript和UI共享相同的线程,因此在JavaScript代码完成执行之前动画不会开始。

如果您想在动画完成后执行某些操作,请使用transitionend事件。

答案 1 :(得分:0)

您不想延迟退货。您希望在一秒钟后执行回调。

function (element) {
    element.style = 'background: #aaa; transition: all 1s ease-in;' 

    setTimeout(function () {
      // whatever you wanted to do with the element;
    }, 1000);
}

理想情况下,正如@AndyE指出的那样,你不会“在一秒钟之后”执行此操作,而是在transitionend事件发生时执行。这更灵活,通常是正确的做法。但是,该事件的跨浏览器支持还不是那么简单。根据您想要实现的目标,“一秒钟后”可能很多更容易实现。

答案 2 :(得分:0)

如何为函数提供回调,并在所需的时间后执行该回调。

function doSomething(callback){
  // execute your transition

  setTimeout(callback,1000);
}

实例:http://jsfiddle.net/eAMXK/ - 您将看到它将当前时间输出到控制台,然后一秒钟后也会这样做。