3 回答
TA贡献1875条经验 获得超3个赞
你没有返回相同的Promise。每次调用时,您都会创建一个新的aboutMove。
考虑这段代码
if (didAboutMove && aboutAnimation) {
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return;
}
如果didAboutMove和aboutAnimation都为真,您将退出承诺初始化器并且永远不会解决承诺。
在调用此方法之前,您很可能需要重置这两个标志。
TA贡献1802条经验 获得超6个赞
你正在兑现你的承诺,onComplete并onReverseComplete为之gsap.timeline。此外,您将从 Promise 函数的回调中返回, didAboutMove && aboutAnimation该函数的作用域不在函数内部。因此,当您第一次调用该函数时。它设置了值didAboutMove,aboutAnimation所以下次调用解析不会被触发。因为函数之前返回。
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贡献1963条经验 获得超6个赞
当你第二次调用它时,didAboutMove标志将为 true,并且你输入 if 块,它只是返回而不解决承诺:
if (didAboutMove && aboutAnimation) {
aboutAnimation.reverse();
didAboutMove = !didAboutMove;
return; // This is the problem
}
因此,您需要通过解决或拒绝来解决承诺。然而,从你的逻辑来看,你只想反转动画,所以也许你不需要返回任何东西。
- 3 回答
- 0 关注
- 122 浏览
添加回答
举报