Hey, thanks for the help!
Yeah, mainly what I'm trying to do is do iterative array manipulation in the web worker, so it should work out just fine. I think, though, that progress callbacks are the way to go, similar to more low level code like C#.
Something like passing a function over to a web worker, and then working through steps, and passing back a progress message, as opposed to handling the entire function at one time with the web worker.
So, you could pass it a tilemap name and an array, and then have it look at the array 100 tiles (for example) at a time, send the message back to change 100 tiles on the main thread, and then continue on. This makes the main thread do the real work of accessing the canvas objects, but releases it at intervals to do animations as well.
Because, like I said, that's really the main issue I'm having, is that Construct will lock everything up trying to complete one task, when it really should be allowing some Graphical functionality to continue on.
Obviously, in that example, there are clearly defined work units, so it's a 'simple' example. I think there are some other use cases but, as you said, it gets very tricky. In any case, I hope I'm not the only one who could gain from this kind of functionality.
I really appreciate the code snippets. They'll undoubtedly help. When I get to implementing a solution, I'll update here with how I went about it, and link to a plugin, if that's the route I take.