开发者社区 问答 正文

jquery 关于Deferred方法的疑问?

a()到b()方法没有问题,正常间隔了4s,之后的c()d()是立即执行,没有间隔,为什么会出现这样的情况呢?

var A = {
        a : function(){
            alert("a执行");
            var dfd = $.Deferred();
            setTimeout(function(){
                dfd.resolve();
            },4000);
            return dfd;
        },
        b : function(){
            alert("b执行");
            var dfd = $.Deferred();
            setTimeout(function(){
                dfd.resolve();
            },4000);
            return dfd;
        },
        c : function(){
            alert("c执行");
            var dfd = $.Deferred();
            setTimeout(function(){
                dfd.resolve();
            },4000);
            return dfd;
        },
        d : function(){
            alert("d执行");
            var dfd = $.Deferred();
            setTimeout(function(){
                dfd.resolve();
            },4000);
            return dfd;
        }
    }

展开
收起
小旋风柴进 2016-06-01 09:23:26 1797 分享 版权
1 条回答
写回答
取消 提交回答
  • 你不return,直接就return undefined了,当然立即执行了

    A.a().then(function () {
        return A.b()
    }).then(function () {
        return A.c()
    }).then(function () {
        A.d()
    2019-07-17 19:22:43
    赞同 展开评论
问答分类:
问答标签:
问答地址: