в моем приложении у меня есть функция обратного вызова, которая ожидает отправки электронных данных на Angular, а затем отображает изменения. Я могу изменить значение, но это не замечено в файле HTML. Таким образом, отображаются неправильные данные.
Функция в component.ts:
public async startDefault(): Promise<void> {
try {
this.oDefaultLoader.startLoading();
this.setNewvalues("api", {
max: 1,
cur: 0
});
setTimeout((): void => {
this.setNewvalues("api", {
max: 19,
cur: 5
});
}, 6000);
await this.electron.sendIpcPipe("startDefault", async (oData: IIpcChainResponse): Promise<void> => {
console.log(oData);
this.setNewvalues("api", {
max: oData.max,
cur: oData.cur
});
}, this.settings.oSetting);
this.oDefaultLoader.stopLoading();
} catch (oErr) {
this.oDefaultLoader.stopLoading();
console.log(oErr);
}
}
// Background Actions
private setNewvalues(sSet: "api" | "bo", oValues: IProgressObject): void {
this.oDefaultStart = deepMergeObject(this.oDefaultStart, {
[sSet]: oValues
} as IDefaultStart);
console.log(this.oDefaultStart.api);
}
Функция sendIpcPipe:
public async sendIpcPipe<T, U>(sEndpoint: string, fnPipe: (data: T) => Promise<void>, oArgs?: U): Promise<void> {
if (this.electron.isElectronApp) {
return new Promise<void>((resolve: Function, _reject: Function): void => {
const oListener: (_event: Electron.IpcRendererEvent, oResponse: T) => Promise<void> = async (
_event: Electron.IpcRendererEvent,
oResponse: T
): Promise<void> => {
if (oResponse as unknown as number === 0) {
this.electron.ipcRenderer.off(sEndpoint + "Response", oListener);
resolve();
} else {
await fnPipe(oResponse);
}
};
this.electron.ipcRenderer.on(sEndpoint + "Response", oListener);
this.electron.ipcRenderer.send(sEndpoint, oArgs);
});
}
return;
}
Код HTML только для показа объект:
<div>
{{ oDefaultStart.api | json }}
</div>
Обновление
Если я использую setNewvalues
вне функции обратного вызова sendIpcPipe
, он работает нормально. Но снаружи ничего или лишь иногда что-то не менялось.