第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

第二次調(diào)用 Promise 無法解決

第二次調(diào)用 Promise 無法解決

楊魅力 2024-01-22 14:31:01
我有以下功能。我將該函數(shù)構(gòu)建為promise. 現(xiàn)在,如果我aboutMove().then(() => {..})第一次打電話,一切正常并且正在解決。不知何故,稍后在其他地方第二次調(diào)用它,該函數(shù)將被執(zhí)行,但未promise解析。為何如此?export const aboutMove = () => {    return new Promise(resolve => {        if (didAboutMove && aboutAnimation) {            aboutAnimation.reverse();            didAboutMove = !didAboutMove;            return;        }        didAboutMove = !didAboutMove;        const about = document.querySelector('.about__container');        const inner = document.querySelector('.about__inner');        aboutAnimation = gsap.timeline({            onComplete: () => {                resolve()            }, onReverseComplete: () => {                resolve()            }        })            .to(about, 1, {                duration: 1,                y: 0,                ease: Power2.easeInOut,            })            .fromTo(inner, {                opacity: 0,                y: 500            }, {                duration: 0.8,                opacity: 1,                y: 0,                ease: Power2.easeInOut            }, 0.5)    });};
查看完整描述

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)志。


查看完整回答
反對 回復(fù) 2024-01-22
?
呼啦一陣風(fēng)

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


查看完整回答
反對 回復(fù) 2024-01-22
?
神不在的星期二

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)動畫,所以也許你不需要返回任何東西。


查看完整回答
反對 回復(fù) 2024-01-22
  • 3 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號