@@ -87,9 +87,15 @@ export class WorkerPool<Props = Record<string, any>, Response = any> {
8787 this . maxReservedThreads = maxReservedThreads ;
8888 }
8989
90- runTask ( { data, resolve, reject } : WorkerRunTaskType < Props > ) {
90+ private runTask ( { data, resolve, reject } : WorkerRunTaskType < Props > ) {
9191 // Get idle worker or create a new worker
9292 const runningWorker = ( ( ) => {
93+ // @ts -ignore
94+ if ( data . workerId ) {
95+ // @ts -ignore
96+ const worker = this . workerQueue . find ( ( item ) => item . id === data . workerId ) ;
97+ if ( worker ) return worker ;
98+ }
9399 const worker = this . workerQueue . find ( ( item ) => item . status === 'idle' ) ;
94100 if ( worker ) return worker ;
95101
@@ -157,23 +163,15 @@ export class WorkerPool<Props = Record<string, any>, Response = any> {
157163
158164 // watch response
159165 worker . on ( 'message' , ( { id, type, data } : WorkerResponse < Response > ) => {
160- // Run callback
161- const workerItem = this . workerQueue . find ( ( item ) => item . id === id ) ;
162-
163- if ( ! workerItem ) {
164- addLog . warn ( 'Invalid worker' , { id, type, data } ) ;
165- return ;
166- }
167-
168166 if ( type === 'success' ) {
169- workerItem . resolve ( data ) ;
167+ item . resolve ( data ) ;
170168 } else if ( type === 'error' ) {
171- workerItem . reject ( data ) ;
169+ item . reject ( data ) ;
172170 }
173171
174172 // Clear timeout timer and update worker status
175- clearTimeout ( workerItem . timeoutId ) ;
176- workerItem . status = 'idle' ;
173+ clearTimeout ( item . timeoutId ) ;
174+ item . status = 'idle' ;
177175 } ) ;
178176
179177 // Worker error, terminate and delete it.(Un catch error)
@@ -191,7 +189,7 @@ export class WorkerPool<Props = Record<string, any>, Response = any> {
191189 return item ;
192190 }
193191
194- deleteWorker ( workerId : string ) {
192+ private deleteWorker ( workerId : string ) {
195193 const item = this . workerQueue . find ( ( item ) => item . id === workerId ) ;
196194 if ( item ) {
197195 item . reject ?.( 'error' ) ;
0 commit comments