首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS回调函数

JS回调函数
EN

Stack Overflow用户
提问于 2014-01-27 19:53:57
回答 2查看 101关注 0票数 0

我有一系列jQuery函数要在块中执行。当它们全部完成后,我需要调用另一个函数。看来回调是最好的方法。这是我的密码。

代码语言:javascript
复制
 function flipPage (x, callback) {

    $("#view-1").animate({
    width: x,
    }, 500);
  $("#view-2").animate({
    width: browserWidth - x,
    }, 500);
  $("#iframe-2").animate({
    left:   -x,
    }, 500);
  $("#sweeper").animate({
    left:   x,
    }, 500);

  callback(function() {
    alert("I'm Done.");
    //do the next thing
  }) ;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-27 22:09:58

基本上和sjkm一样,但很简单。

代码语言:javascript
复制
function flipPage (x, callback) {
    var counter = 0;

    $("#view-1").animate({
        width: x,
    }, 500, finished);

    $("#view-2").animate({
        width: browserWidth - x,
    }, 500, finished);

    $("#iframe-2").animate({
        left:   -x,
    }, 500, finished);

    $("#sweeper").animate({
        left:   x,
    }, 500, finished);

    function finished() {
        counter++;      
        if (counter >= 4) {
            alert("I'm Done.");
            //do the next thing if callback exists
            callback && callback.call();          
        }
    };
}

小提琴

票数 0
EN

Stack Overflow用户

发布于 2014-01-27 20:01:37

你可以这样做:

代码语言:javascript
复制
function flipPage (x, callback) {
      var animationHelper = {
        actionCounter: 0,
        actionCount: 4,
        callbackHandler: function() {
            this.actionCounter++;
            if(this.actionCounter == this.actionCount)
                this.callbackAllFinished();
        },
        callbackAllFinished: null
      };

      $("#view-1").animate({
        width: x }, 500, animationHelper.callbackHandler);

      $("#view-2").animate({
        width: browserWidth - x }, 500, animationHelper.callbackHandler);

      $("#iframe-2").animate({
        left: -x }, 500, animationHelper.callbackHandler);

      $("#sweeper").animate({
        left: x }, 500, animationHelper.callbackHandler);

      animationHelper.callbackAllFinished = function() {
        alert("I'm Done.");
        //do the next thing
      };
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21390352

复制
相关文章

相似问题

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