























这是一个创建于 438 天前的主题,其中的信息可能已经有所发展或是发生改变。
// JS 的内置发布订阅
// create custom events
const catFound = new CustomEvent("animalfound", {
detail: {
name: "cat",
},
});
const dogFound = new CustomEvent("animalfound", {
detail: {
name: "dog",
},
});
const element = document.createElement("div"); // create a <div> element
// add an appropriate event listener
element.addEventListener("animalfound", (e) => console.log(e.detail.name));
// dispatch the events
element.dispatchEvent(catFound);
element.dispatchEvent(dogFound);
// "cat" and "dog" logged in the console
// 我的自定义发布订阅,我的桌面应用移动应用网页应用都是用它驱动的。
export class StateManage<T> {
private inValue: T
private publishChangeCalls: (() => void)[] = []
constructor(v: T) {
this.inValue = v
}
subscriptChange(subCall: () => void) {
this.publishChangeCalls.push(subCall)
}
unsubscriptChange(subCall: () => void) {
this.publishChangeCalls = this.publishChangeCalls.filter(sub => !Object.is(sub, subCall))
}
set value(v: T) {
this.inValue = v
this.publishChangeCalls.forEach(call => call())
}
get value(): T {
return this.inValue
}
}
1 AV1 2025 年 4 月 1 日设计 Pub/Sub ,需要考虑的一些问题: 参考我也曾经造过轮子。 |
2 ChrisFreeMan 2025 年 4 月 1 日@DOLLOR 靠,居然一直没发现我打错了,好在都是自己的项目。。。😅 你说的 1 ,2 ,3 ,4 都不是我遇到的问题啊,这些问题我都会在其他地方处理的。而且我问的也不是这个。 |
3 ChrisFreeMan 2025 年 4 月 1 日算了,突然发现我问了一个很无聊的问题,我已经问 AI 了解决了,我自己沉了吧。 |
4 rimworld 2025 年 4 月 1 日一般来说是语言自带的会比较好吧,运行环境( v8 )啥的会做优化。 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。