首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数的暂停功能,而另一个函数则完成。

函数的暂停功能,而另一个函数则完成。
EN

Stack Overflow用户
提问于 2013-08-03 16:45:52
回答 2查看 71关注 0票数 0

我在挣扎于这段代码:

在'swapFunc‘函数中,我将一个addEventListener添加到'tEleBaby’元素中,然后通过替换‘远程婴儿’类来触发addEventListener。

问题在于'setTimeout‘中的代码,它需要在'animListener’函数完成后运行。我不热衷于使用setTimeout,所以我更喜欢一种更明智/更正确的方法来处理这个问题。

代码语言:javascript
复制
swapFunc: function swapFunc(tEle, swapEle) {
    var tEle = document.getElementById(tEle);
    var tEleBaby = tEle.children[0];
    tEleBaby.addEventListener("animationend", this.animListener, false);
    tEleBaby.classList.add("animFadeOut");
    // I want to remove the setTimeout; i.e. the animListener func should feedback to swapFunc
    setTimeout(function () {
        tEle.id = swapEle;
        tEle.setAttribute("data-action", dataAction);
        tEle.setAttribute("data-tooltip", dataTooltip);
    }, 500);
},

animListener: function animListener(ev) {
    if (ev.type.toLowerCase().indexOf("animationend") >= 0) {
        var eventTarget = ev.target;
        eventTarget.className = "animFadeIn cFBIcons";
    }
},
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-03 17:02:45

这样试一试:

代码语言:javascript
复制
swapFunc: function swapFunc(tEle, swapEle) {
    var tEle = document.getElementById(tEle);
    var tEleBaby = tEle.children[0];
    tEleBaby.addEventListener("animationend", listener, false);
    tEleBaby.classList.add("animFadeOut");

    function listener(ev) {
        animListener(ev, callMe);
    }

    function callMe() {
        tEle.id = swapEle;
        tEle.setAttribute("data-action", dataAction);
        tEle.setAttribute("data-tooltip", dataTooltip);
    }
},

animListener: function animListener(ev, callback) {
    if (ev.type.toLowerCase().indexOf("animationend") >= 0) {
        var eventTarget = ev.target;
        eventTarget.className = "animFadeIn cFBIcons";
    }
    callback();
},
票数 1
EN

Stack Overflow用户

发布于 2013-08-03 17:05:51

为什么不简单地将代码放在事件处理程序中呢?

代码语言:javascript
复制
var self = this;

tEleBaby.addEventListener ("animationend" , function (ev) {
    self.animListener(ev);
    //rest of code
} , false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18035095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档