为了账号安全,请及时绑定邮箱和手机立即绑定

等待带有动画的功能完成,直到运行另一个功能

等待带有动画的功能完成,直到运行另一个功能

猛跑小猪 2019-11-25 14:34:48
我在正常(非ajax)函数中遇到了问题,每个函数中都包含很多动画。目前,我只是具有一个setTimeoutbetween函数,但这并不是完美的,因为没有浏览器/计算机是相同的。附加说明:它们都有碰撞的单独动画/等。我不能简单地将一个放在另一个的回调函数中// multiple dom animations / etcFunctionOne();// What I -was- doing to wait till running the next function filled// with animations, etcsetTimeout(function () {     FunctionTwo(); // other dom animations (some triggering on previous ones)}, 1000); 无论如何在js / jQuery中有:// Pseudo-code-do FunctionOne()-when finished :: run -> FunctionTwo()我知道$.when()&$.done(),但是这些是针对AJAX的...我更新的解决方案jQuery有一个名为$ .timers的暴露变量(由于某种原因未在jQuery文档中的任何地方列出),该变量保存当前发生的动画数组。function animationsTest (callback) {    // Test if ANY/ALL page animations are currently active    var testAnimationInterval = setInterval(function () {        if (! $.timers.length) { // any page animations finished            clearInterval(testAnimationInterval);            callback();        }    }, 25);};基本用法:// run some function with animations etc    functionWithAnimations();animationsTest(function () { // <-- this will run once all the above animations are finished    // your callback (things to do after all animations are done)    runNextAnimations();});
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

在第一个函数的末尾添加以下内容


return $.Deferred().resolve();

像这样调用两个函数


functionOne().done(functionTwo);


查看完整回答
反对 回复 2019-11-25
?
Helenr

TA贡献1780条经验 获得超4个赞

除了Yoshi的答案,我还找到了另一个非常简单的动画(回调类型)解决方案。


jQuery有一个公开变量(由于某种原因未在jQuery文档中列出),称为$ .timers,该变量保存当前正在发生的动画数组。


function animationsTest (callback) {

    // Test if ANY/ALL page animations are currently active


    var testAnimationInterval = setInterval(function () {

        if (! $.timers.length) { // any page animations finished

            clearInterval(testAnimationInterval);

            callback();

        }

    }, 25);

};

基本用法:


functionOne(); // one with animations


animationsTest(functionTwo);

希望这可以帮助一些人!


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 641 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信