Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 订阅可观察到的返回错误值_Javascript_Node.js_Electron - Fatal编程技术网

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