具有更改功能的观察者模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有更改功能的观察者模式相关的知识,希望对你有一定的参考价值。
我尝试做一个简单的观察者模式。通知订餐者订餐。但执行时出现错误:TypeError:foodChanger.addEventListener不是函数
这是我的代码:
class EventObserver {
constructor() {
this.observers = [];
}
subscribe(fn) {
this.observers.push(fn);
}
unsubscribe(fn) {
this.observers = this.observers.filter((subscriber) => subscriber !== fn);
}
broadcast(data) {
this.observers.forEach((subscriber) => subscriber(data));
}
}
const food = 'fruit'
const blogObserver = new EventObserver();
blogObserver.subscribe(() => {
food.uptade(this);
});
const foodChanger = function () {
const foods = ['vegetable', 'pizza', 'salad'];
const timeSpin = setInterval(()=>{this.food = foods[Math.floor(Math.random()*foods.length)];
},200);
setTimeout(() => {
clearInterval(timeSpin)
}, 2000);
}
foodChanger.addEventListener('keyup', () => blogObserver.broadcast(foodChanger));
答案
您的foodChanger
变量是一个函数,因此不是具有EventTarget
方法的addEventListener
。
以上是关于具有更改功能的观察者模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)