關于complete的問題
不管是執行openDoor()還是shutDoor(),里面函數doorAction中的count剛開始都是2,感覺complete中的if語句始終都不會執行,但是這里只有返回了defer.resolve()后面才能繼續執行then的異步操作,不是很明白為什么這里的if語句會執行。。希望老師解答一下。。
不管是執行openDoor()還是shutDoor(),里面函數doorAction中的count剛開始都是2,感覺complete中的if語句始終都不會執行,但是這里只有返回了defer.resolve()后面才能繼續執行then的異步操作,不是很明白為什么這里的if語句會執行。。希望老師解答一下。。
2015-09-12
舉報
2015-11-12
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("右門"));
? ? ? ??
2015-09-12
執行的代碼順序不同加載功能的表現也不同
2015-09-12
又看了看。。是因為先執行的doorLeft.transition讓count減1,然后再執行doorRight.transition,當它執行完的時候才通過if判斷返回‘已完成’狀態的defer對象供后面開燈關燈的then方法調用。。是這樣理解嗎?