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

关于complete的问题

不管是执行openDoor()还是shutDoor(),里面函数doorAction中的count刚开始都是2,感觉complete中的if语句始终都不会执行,但是这里只有返回了defer.resolve()后面才能继续执行then的异步操作,不是很明白为什么这里的if语句会执行。。希望老师解答一下。。

正在回答

3 回答

if里的会执行。是因为左门和右门各调用了一次。左门调用后count变为了1.右门执行时可以进入if。释放defer.

你可以换成下面看下流程就知道了。

        var complete = function(tt) {

console.log(count);

console.log(tt);

            if (count == 1) {

                defer.resolve();

                return;

            }

            count--;

        };

        doorLeft.transition({

            'left': left

        }, time, complete("左门"));

        

        doorRight.transition({

'left': right

}, time, complete("右门"));

        


0 回复 有任何疑惑可以回复我~
#1

Franc_Ribery 提问者

非常感谢!
2015-11-30 回复 有任何疑惑可以回复我~

执行的代码顺序不同加载功能的表现也不同

0 回复 有任何疑惑可以回复我~

又看了看。。是因为先执行的doorLeft.transition让count减1,然后再执行doorRight.transition,当它执行完的时候才通过if判断返回‘已完成’状态的defer对象供后面开灯关灯的then方法调用。。是这样理解吗?

0 回复 有任何疑惑可以回复我~
#1

zhongkeyuan

是这样理解的吗?
2016-04-14 回复 有任何疑惑可以回复我~
#2

qq_画一群人的感伤_0

这个返回执行完毕时给后面开灯关灯用的吗???
2016-11-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于complete的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信