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

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.

主站蜘蛛池模板: 嵊州市| 富民县| 仁化县| 乌拉特前旗| 贺州市| 通州区| 甘南县| 德令哈市| 平阴县| 灌南县| 巴彦县| 古交市| 沙河市| 噶尔县| 墨脱县| 丹江口市| 嘉鱼县| 平度市| 深泽县| 泸水县| 彭州市| 阜宁县| 饶阳县| 柘城县| 武邑县| 花垣县| 德清县| 双城市| 南城县| 云林县| 宜良县| 葵青区| 湖口县| 江油市| 崇文区| 平江县| 隆德县| 炉霍县| 岳普湖县| 东至县| 漳州市|