我有一个要发送给多个侦听器/订阅者的对象,因此我检查了Combine,发现了两种不同类型的发布者,即/Users/subkundu/Desktop/Work/Projects/React/ownerstown/node_modules/@firebase/messaging/index.ts:75
if (self && 'ServiceWorkerGlobalScope' in self) {
^
ReferenceError: self is not defined
和NotificationCenter.Publisher
。我很困惑,为什么有人会在PassThroughSubject
上使用NotificationCenter.Publisher
。
我想出了下面的代码,演示了两种方法。总结一下:
PassThroughSubject
必须具有NotificationCenter.Publisher
静态属性Notification.Name
发布不同类型的对象/为同一Notification.Name
发布不同的对象)Notification.Name
(而不是发布者本身)上完成NotificationCenter.default
闭包中显式转换为使用的类型在什么情况下,有人会在map
上使用NotificationCenter.Publisher
?
PassThroughSubject
答案 0 :(得分:3)
如果您必须使用使用NotificationCenter的第三方框架。
答案 1 :(得分:0)
NotificationCenter
可以被认为是第一代消息传递系统,而Combine
是第二代。它具有运行时开销,并且需要强制转换可以存储在Notification
s中的对象。就个人而言,在构建iOS 13框架时,我永远不会使用NotificationCenter
,但是您确实需要使用它来访问仅在此处发布的许多iOS通知。基本上,在我的个人项目中,除非绝对必要,否则我将其视为只读。