javascript - 渲染过程中调用的工作人员发来的帖子会去哪儿?

标签 javascript html electron web-worker postmessage

我正在使用ElectronJS制作一个从图像生成STL文件的应用程序,并且正在使用OpenCV访问图像的每个像素的值。 Worker用于写入STL文件。我遇到的麻烦是,我没有在创建工作程序的文件(向工作程序发送消息的同一位置)或主进程中接收消息。

以下是工作程序的创建:

let worker = new Worker('../workers/convertor.js')

这是 worker 的代码
onmessage = function (e) {
   //Creating the write stream
   let stream = fs.createWriteStream(e.data[1].split('.')[0] + '.stl', {flags: 'w'})
   this.self.postMessage([50])

   convert(stream, e.data[2])
   self.close()
}

这就是我向工作人员发送消息的方式:
 function convertFile() {
    // Not converting if there is no file selected
    if(filePath != null) {
        // The mat for image analysis
        let src = cv.imread('img-for-analysis', cv.IMREAD_GRAYSCALE)
        // Variable to hold the pixel values of the image
        let pixelValues = [...Array(src.rows)].map(e => Array(src.cols).fill(null))
        //Storing the values of the pixels in the array
        for(let i = 0; i < src.rows; i++) {
            for (let j = 0; j < src.cols; j++) {
                pixelValues[i][j] = src.ucharAt(i, j * src.channels())
            }
        }
        worker.postMessage([filePath, fileName, pixelValues])
    }
}

我将这段代码放在了main.js和js文件中,在其中从以下位置创建/发送了消息的 worker :
onmessage = function(e) {
    console.log(e)
}

该代码的所有其他部分都可以正常工作,但是我在控制台中未收到任何响应。

最佳答案

我想到了。调用this.self.postmessage()正在向工作人员发布消息。我只需要简单地从worker调用postmessage()。在要接收消息的文件中,我将执行以下操作:

worker.onmessage = function (e) {
    // Code
}

关于javascript - 渲染过程中调用的工作人员发来的帖子会去哪儿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59189100/

相关文章:

javascript - Electron-builder 未在 Mac OS X 上发布到 GitHub

electron - 如何在运行时更改 Electron 应用程序菜单中的项目?

javascript - 如何从树对象中获取给定路径的子树?

javascript - 从 firebase 获取数据到 node.js 文件

c# - 自定义 HtmlHelper(ActionLink 中的图像)

html - Bootstrap 4 轮播图像不会覆盖其他图像

javascript - 从 html 获取 href 属性会产生不需要的结果

javascript - 使用 selenium webdriver 等待网络空闲?

javascript - 在 webview-iphone 中通过 javascript 清除 cookie

javascript - 我想通过js在获取的数据上显示隐藏数据