3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個贊
你沒有返回相同的Promise。每次調(diào)用時,您都會創(chuàng)建一個新的aboutMove。
考慮這段代碼
if (didAboutMove && aboutAnimation) {
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return;
}
如果didAboutMove和aboutAnimation都為真,您將退出承諾初始化器并且永遠(yuǎn)不會解決承諾。
在調(diào)用此方法之前,您很可能需要重置這兩個標(biāo)志。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個贊
你正在兌現(xiàn)你的承諾,onComplete并onReverseComplete為之gsap.timeline。此外,您將從 Promise 函數(shù)的回調(diào)中返回, didAboutMove && aboutAnimation該函數(shù)的作用域不在函數(shù)內(nèi)部。因此,當(dāng)您第一次調(diào)用該函數(shù)時。它設(shè)置了值didAboutMove,aboutAnimation所以下次調(diào)用解析不會被觸發(fā)。因?yàn)楹瘮?shù)之前返回。
if (didAboutMove && aboutAnimation) {
// This block will execute in second run.
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return; // Returns from here in second run.
}
didAboutMove = !didAboutMove; // assigned truthy value on first run
aboutAnimation = gsap.timeline // assigned truthy value on first run

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個贊
當(dāng)你第二次調(diào)用它時,didAboutMove標(biāo)志將為 true,并且你輸入 if 塊,它只是返回而不解決承諾:
if (didAboutMove && aboutAnimation) {
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return; // This is the problem
}
因此,您需要通過解決或拒絕來解決承諾。然而,從你的邏輯來看,你只想反轉(zhuǎn)動畫,所以也許你不需要返回任何東西。
- 3 回答
- 0 關(guān)注
- 206 瀏覽
添加回答
舉報