官术网_书友最值得收藏!

Basic web worker communication

As the component loads, we will want to set up the worker so that it is not something that we have to repeat several times. So, imagine if there were a way in which you can set up something conditionally and perform an action only when you want it to. In our case, you can add it to the constructor or to any of the lifecycle hooks that denote what phase the component is in such as OnInit, OnContentInit, OnViewInit and so on, which are provided by Angular as follows:

this.worker = new Worker('scripts.bundle.js');

this.worker.addEventListener('message', (e) => {
this.result = e.data;
});

Once initialized, we then use the addEventListener() method to listen for any new messages—that is, results coming from our worker.

Any time the code is changed, we simply pass that data to the worker that we have now set up. The implementation for this looks as follows:

codeChange() {
this.worker.postMessage(this.code);
}

As you can note, the main application component is intentionally lean. We are leveraging workers for the sole reason that CPU-intensive operations can be kept away from the main thread. In this case, we can move all the logic including the validations into the worker, which is exactly what we have done.

主站蜘蛛池模板: 黄梅县| 延津县| 扎囊县| 海丰县| 新安县| 建宁县| 阳原县| 嵩明县| 北辰区| 江门市| 花莲市| 沈丘县| 疏附县| 西乌| 铅山县| 东光县| 锦州市| 聊城市| 潮安县| 大名县| 竹溪县| 出国| 虞城县| 龙陵县| 右玉县| 荥阳市| 清远市| 洛阳市| 兴城市| 江都市| 方城县| 赤壁市| 七台河市| 岳阳县| 垦利县| 新蔡县| 遂昌县| 洛阳市| 阳信县| 门头沟区| 布拖县|