在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ Javascript中,如果事件監(jiān)聽器是異步的,怎樣控制數(shù)據(jù)競(jìng)爭(zhēng)?

Javascript中,如果事件監(jiān)聽器是異步的,怎樣控制數(shù)據(jù)競(jìng)爭(zhēng)?

考慮如下代碼

whatever.onclick = async () => {
    const a = await(await fetch('step-1')).text();
    const b = await(await fetch('step-2')).text();
    whatever.textContent = a + b;
}

事件監(jiān)聽器是異步的,所以如果用戶在step-1step-2之間再次點(diǎn)擊的話,就會(huì)產(chǎn)生競(jìng)爭(zhēng)。遠(yuǎn)程是第三方,所以沒法控制。

現(xiàn)在有這幾種可能的需求:

  • 如果前一次請(qǐng)求尚未結(jié)束,丟棄新請(qǐng)求;或
  • 如果前一次請(qǐng)求尚未結(jié)束,新請(qǐng)求應(yīng)當(dāng)和舊請(qǐng)求一起返回;或
  • 如果前一次請(qǐng)求尚未結(jié)束,新請(qǐng)求應(yīng)當(dāng)排隊(duì)。

請(qǐng)問有沒有合適的輪子,還是說必須自己造?

感覺這是個(gè)很合理的需求啊,為啥loadsh沒有

回答
編輯回答
真難過

給async 設(shè)定一個(gè)時(shí)間范圍的限制吧,在短時(shí)間內(nèi)重復(fù)多次觸發(fā)的click,實(shí)際只執(zhí)行一次。

2018年4月3日 12:49