Javascript 订阅可观察到的返回错误值
我正在使用构建一个应用程序。我的文件结构是这样的,所有文件夹都在同一个目录中。我的问题是,当我订阅Javascript 订阅可观察到的返回错误值,javascript,node.js,electron,Javascript,Node.js,Electron,我正在使用构建一个应用程序。我的文件结构是这样的,所有文件夹都在同一个目录中。我的问题是,当我订阅startActivitymethod时,我会返回两个不同的值。看起来singleton不起作用了,我得到了一个对象的两个不同实例 文件夹结构 1.ts activity.ts 梅因酒店 结果 那么,为什么我不能从两个console.log()调用中获得相同的数据呢? PS:我对Node.js world很陌生,所以我确信这是一件微不足道的事情。这是Electron基于多进程架构的原因。主/渲染器运
startActivity
method时,我会返回两个不同的值。看起来singleton不起作用了,我得到了一个对象的两个不同实例
文件夹结构
1.ts
activity.ts
梅因酒店
结果
那么,为什么我不能从两个console.log()调用中获得相同的数据呢?
PS:我对Node.js world很陌生,所以我确信这是一件微不足道的事情。这是Electron基于多进程架构的原因。主/渲染器运行在不同的进程上,这意味着您不能直接在它们之间共享对象,因为主进程不提供单一对象,因为主进程创建一个对象,渲染器进程也为自己创建一个对象。如果要在进程之间建立单状态,则应考虑通过IPC协议之间的传递值进行同步。
- activity.ts
- main.ts
- renderer.ts
import Activity from "./activity";
const activity = Activity.getInstance();
activity.startActivity().subscribe(
data => {
console.log("Renderer: " + data);
}
);
import {Observable} from 'rxjs/Rx';
class Activity {
private static _instance: Activity;
public static getInstance() {
return this._instance || (this._instance = new this());
}
public startActivity() {
return Observable
.interval(this.config.timeInterval)
.map(() => {
return Math.random();
});
}
}
export default Activity;
import {app} from "electron";
app.on("ready", () => {
const activity = Activity.getInstance();
activity.startActivity().subscribe(
data => {
console.log("Main: " + data);
}
);
});
Renderer: 0.599276120749491
Main: 0.5746604589633764