node.js/React.js
[React] 멀티스레드 이용하여 파일 다운
IT공부블로그
2022. 4. 28. 17:51
728x90
반응형
라이브러리
yarn add worker-loader
worker 관련 라이브러리 설치
worker-loader 파일 설정
custom.d.ts
declare module "worker-loader!*" {
class WebpackWorker extends Worker {
constructor();
}
export default WebpackWorker;
}
worker 파일 작성
TestWorker.js
/* eslint-disable no-unused-vars */
/* eslint-disable no-restricted-globals */
const ctx: Worker = self as any;
// Respond to message from parent thread
ctx.addEventListener("message", async (event) => {
await sleep();
const { data } = event;
axios({ url: data.url, responseType: 'arraybuffer', })
.then(res => {
const path = node_path.join('/Users', `./downloads/`, `${data.index}.png`);
const writable = node_fs.createWriteStream(path);
writable.write(new Uint8Array(res.data));
ctx.postMessage(data.index);
})
.catch(err => {
console.error('err: ', err);
})
});
worker 사용
import Worker from "worker-loader!./TestWorker";
const worker = new Worker();
worker.onmessage = (e) => {
if(true){
worker.terminate();
}
}
worker.postMessage({
test: 'test'
});
728x90
반응형