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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

每種方法在等待 ajax 時(shí)阻止操作的最佳實(shí)踐?

每種方法在等待 ajax 時(shí)阻止操作的最佳實(shí)踐?

在 JS 組件中,我有幾個(gè)方法可以響應(yīng),例如,單擊事件,然后觸發(fā) ajax 請(qǐng)求。為了防止在第一個(gè)完成之前多次觸發(fā)相同的ajax請(qǐng)求(在多次點(diǎn)擊同一個(gè)按鈕的情況下),我通常設(shè)置一個(gè)標(biāo)志。所以我的組件中有一個(gè)名為working(最初是false)的變量。單擊某些內(nèi)容時(shí),我將其設(shè)置為true,當(dāng) ajax 請(qǐng)求完成時(shí),我將其設(shè)置回false. 如果working === true我阻止任何 ajax 請(qǐng)求。問題是,如果working === true,組件中的所有操作都被阻止,因此不能同時(shí)單擊兩件事。所以用戶不能點(diǎn)擊“保存”,直到他的“喜歡”點(diǎn)擊完成。在代碼示例中,respondToClickB將被阻塞,直到respondToClickA解決。我怎樣才能更好地處理這個(gè)問題?先感謝您!export default {    data: function() {        return {            working: false        }    },    methods: {        respondToClickA: function() {            let self = this;            if(!self.working)            {                self.working = true;                axios.get('/ajax')                    .then(function(response){                        self.working = false;                    });            }        },        respondToClickB: function() {            let self = this;            if(!self.working)            {                self.working = true;                axios.get('/ajax')                    .then(function(response){                        self.working = false;                    });            }        }    }}
查看完整描述

1 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

一個(gè)很好的用例Set:使self.working成為一個(gè)Set對(duì)象,并向其添加/刪除值。


Set 就像一個(gè)數(shù)組,但它沒有順序。


export default {

    data: function() {

        return {

            working: new Set()

        }

    },

    methods: {

        respondToClickA: function() {

            let self = this;

            if(!self.working.has('a'))

            {

                self.working.add('a')

                axios.get('/ajax')

                    .then(function(response){

                        self.working.delete('a');

                    });

            }

        },

        respondToClickB: function() {

            let self = this;

            if(!self.working.has('b'))

            {

                self.working.add('b');

                axios.get('/ajax')

                    .then(function(response){

                        self.working.delete('b');

                    });

            }

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-06-24
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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