3 回答
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
當(dāng)您第二次調(diào)用它時(shí),該didAboutMove標(biāo)志將為真,然后您進(jìn)入 if 塊,該塊只是返回而不解析承諾:
if (didAboutMove && aboutAnimation) {
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return; // This is the problem
}
因此,您需要通過(guò)解決或拒絕它來(lái)解決承諾。但是,從您的邏輯來(lái)看,您只是打算反轉(zhuǎn)動(dòng)畫(huà),所以也許您根本不需要返回任何東西。
TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
你正在解決你onComplete的承諾onReverseComplete。gsap.timeline此外,您將從 Promise 函數(shù)的回調(diào)中返回,基于 didAboutMove && aboutAnimation它不在函數(shù)內(nèi)部的范圍內(nèi)。因此,當(dāng)您第一次調(diào)用該函數(shù)時(shí)。它設(shè)置值didAboutMove等等aboutAnimation,下一次調(diào)用解析不會(huì)被觸發(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)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
你沒(méi)有返回相同的Promise。每次調(diào)用時(shí),您都在創(chuàng)建一個(gè)新的aboutMove。
考慮到這段代碼
if (didAboutMove && aboutAnimation) {
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return;
}
如果didAboutMove和aboutAnimation都為真,您將退出承諾初始化程序并且永遠(yuǎn)不會(huì)解決承諾。
您很可能需要在調(diào)用此方法之前重置這兩個(gè)標(biāo)志。
添加回答
舉報(bào)
