JavaScript сообщений веб-воркеров - PullRequest
0 голосов
/ 05 августа 2020

Мне нужен веб-воркер JavaScript, который поддерживает собственное внутреннее состояние (а не только отвечает на сообщения). Он также должен иметь возможность выполнять вычисления до тех пор, пока ему не будет сказано остановиться (отправленным сообщением). Что-то вроде следующего:

// worker.js
initialState = () => {...}
updateState = (state) => {...}
updateStateWithMessage = (state, message) => {...}

state = initalState()
state = updateStateWithMessage(state, self.getmessage())
while (true) {
    while (!self.hasmessage()) {
        state = updateState(state)
    }
    state = updateStateWithMessage(state, self.getmessage())
    self.postmessage(state)
}

//main.js
worker = new Worker("worker.js")
worker.onmessage = (event) => console.log(event.data)
onClick() {
    worker.postMessage("Here is some data.")
}

Я не мог придумать, как реализовать это с помощью одного обратного вызова self.onmessage в worker (именно так я видел большинство примеров работы Web Workers), поскольку он отвечает поддержанием собственного внутреннего состояния. Итак, я придумал фиктивные функции self.getmessage и self.hasmessage. Может ли кто-нибудь показать мне, как на самом деле реализовать это или что-то подобное.

Заранее спасибо!

...