如何读取 web worker 内部的数据?

How to read the data inside the web worker?

我想知道如何将数据传递给 Monaco web worker,然后可以从 worker 代码中读取这些数据。

我想传递的数据是一些 API 端点,因此工作人员可以调用 APIs:

const worker = monaco.editor.createWebWorker<MyWorkerProxy>({
    moduleId,
    label: languageId,
    createData: {
        languageId,
        apis: { // <-- how to read this data?
            foo: 'http://localhost/foo',
            bar: 'http://localhost/bar'
        }
    }
});

谢谢!

我意识到“initialize”方法(在工作代码中)的第二个参数包含原始的 createData 对象。

为了可以从工作代码的其他部分访问它,我构建了一个小型单例:

'use strict';

import * as edworker from 'monaco-editor/esm/vs/editor/editor.worker';
import { MyWorker } from './my-worker';
import { CreateData, Settings } from './worker-settings';

self.onmessage = (message: any) => {
    edworker.initialize((context: monaco.worker.IWorkerContext, createData: CreateData) => {
        Settings.getInstance().setCreateData(createData); // Singleton

        return new MyWorker (context)
    });
};

所以无论我需要调用 API,我都会:

const api = Settings.getInstance().getApis()['foo']

如果有更优雅的方法,如果你能post这里就太好了。