如何解决哪种设计模式适合在 javascript 中接收来自不同前端到单个后端的投标
我需要一些指导,我正在开发一个提供投标的 wordpress 插件。
有两种类型的用户可以为拍卖出价。能够代表任何用户对任何拍卖出价的实际用户或管理员。
从前端,用户可以出价,后端管理员可以代表用户出价,并且有一个实时表格呈现所有出价。但问题是,当管理员添加出价时,它会显示在表格中,但是如果来自前端的任何用户出价,这不会在同一个表格中弹出..您必须重新加载页面以查看是否有任何出价从前端出现。
我在 ajax 调用中使用了 setInterval()
,但问题在于 setIntervel,如果前端用户有任何出价,它会一次又一次地加载。
有人建议遵循观察者设计模式来解决这个障碍。我试过但没有运气...
我认为观察者设计模式在这里帮不了我。
// The news class is the Observable class or "subject"
class News {
// A list of observers
constructor() {
this.observers = [];
}
// Method for subscribing to,or "observing" observable
addSubscriber(subscriber) {
this.observers.push(subscriber);
}
// Method for unsubscribing from observable
unsubscribe(subscriber) {
var index = this.observers.indexOf(subscriber);
this.observers.splice(index,index);
}
// Method for sending data to subsribers
transmit(data) {
console.log('transmit: ',data);
this.observers.forEach(subscriber => subscriber.receive(data));
}
}
// The News Outlets are subscribers to the news in different languages
class NewsOutlet {
// We will set the language when we instantiate the news outlet
constructor() {
this.data = '';
this.news = '';
}
receive(data) {
this.data = data;
var self = this;
// Translate after receiving
jQuery.ajax({
url: Observer.ajaxurl,type : 'POST',encoding: 'UTF-8',dataType: 'JSON',data: {
action: 'get_live_room_auction_status',last_timestamp : Observer.last_timestamp
},success: function(result) {
self.news = result;
self.reportTheNews();
}
});
}
reportTheNews() {
// A shady workaround for our HTML efforts!
jQuery('.bidders-list tbody').append(this.news);
// document.getElementById(elemId).innerText = this.news;
}
}
let news = new News;
let enOutlet = new NewsOutlet();
news.addSubscriber(enOutlet);
var sendNews = function( auction_id,timestamp ) {
news.transmit(timestamp);
news.observers.forEach(function(o){
o.reportTheNews();
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。