【发布时间】:2022-05-02 00:29:58
【问题描述】:
我对信号器和角度有一个奇怪的问题。我们最近升级了 signalr 以使用 @microsoft/signalr 包而不是 @aspnet/signalr 包,我们注意到 signalr 调用的回调不再在角度区域中运行。
重要的代码位:
// connection is of type HubConnection
public async onUpdateJobInfo(callback: (jobInfo: JobInfo) => void): Promise<void> {
return this.connection.on('someInvokedMethod', callback);
}
// Register the callback
this.jobHub.onUpdateJobInfo((jobInfo: JobInfo) => this.updateJobInfo(jobInfo));
// Process the callback
private updateJobInfo(jobInfo: JobInfo): void {
console.log('update jobservice in zone: ', NgZone.isInAngularZone());
}
日志 (update jobservice in zone: false) 表明我们没有在 angular zone 中运行回调,因此更改检测无法按预期工作。当使用与旧信号器类似的设置时,代码按预期在角度区域中运行。这是最近已知的变化吗?如何最好地应对这种情况?用 zone.run() 语句封装所有内容?
感谢您的帮助!
【问题讨论】: