不管是执行openDoor()还是shutDoor(),里面函数doorAction中的count刚开始都是2,感觉complete中的if语句始终都不会执行,但是这里只有返回了defer.resolve()后面才能继续执行then的异步操作,不是很明白为什么这里的if语句会执行。。希望老师解答一下。。
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("右门"));
执行的代码顺序不同加载功能的表现也不同
又看了看。。是因为先执行的doorLeft.transition让count减1,然后再执行doorRight.transition,当它执行完的时候才通过if判断返回‘已完成’状态的defer对象供后面开灯关灯的then方法调用。。是这样理解吗?