如何读取 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这里就太好了。
我想知道如何将数据传递给 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这里就太好了。