在JS组件中,我有几种方法可以响应,例如,单击事件,然后触发ajax请求。为了防止相同的ajax请求在第一个结束之前触发多次(如果多次单击同一按钮),我通常设置一个标志。因此,我在组件中有一个名为<%= text_field_tag(:q %>
的变量(最初是working
)。单击某些内容后,将其设置为false
,而完成ajax请求后,将其设置回true
。如果false
我阻止了任何ajax请求。
问题是,如果working === true
,则该组件中的所有操作均被阻止,因此不能同时单击两件事。因此,用户直到完成“喜欢”点击后,才能点击“保存”。
在代码示例中,working === true
将被阻止,直到respondToClickB
被解决为止。
如何更好地解决这个问题?
提前谢谢!
respondToClickA
答案 0 :(得分:0)
Set
的一个很好的用法案例:使self.working
成为Set
对象,并向其中添加/删除值。
Set
就像一个数组,但是没有顺序。
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');
});
}
}
}
}