Bird
Raised Fist0
Denoframework~5 mins

Web Workers for parallel processing in Deno - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Web Worker in the context of Deno?
A Web Worker is a way to run JavaScript code in a separate thread, allowing parallel processing without blocking the main thread.
Click to reveal answer
beginner
How do you create a new Web Worker in Deno?
You create a new Worker by using the Worker constructor with the script URL and options, for example: new Worker(new URL('worker.js', import.meta.url).href, { type: 'module' }).
Click to reveal answer
beginner
How does communication happen between the main thread and a Web Worker?
Communication happens by sending messages using postMessage() and receiving them with onmessage event handlers on both sides.
Click to reveal answer
beginner
Why use Web Workers for parallel processing?
Web Workers let you run heavy or blocking tasks in the background, so the main program stays responsive and smooth.
Click to reveal answer
intermediate
What is the significance of the type: 'module' option when creating a Worker in Deno?
It tells Deno to treat the worker script as an ES module, enabling import/export syntax and modern JavaScript features inside the worker.
Click to reveal answer
How do you send data from the main thread to a Web Worker in Deno?
AUsing <code>transfer()</code> method
BUsing <code>send()</code> method
CUsing <code>emit()</code> method
DUsing <code>postMessage()</code> method
Which option is required to create a Worker that supports ES modules in Deno?
A{ mode: 'es' }
B{ scriptType: 'module' }
C{ type: 'module' }
D{ module: true }
What happens if you run heavy computation on the main thread without Web Workers?
AThe computation runs in parallel automatically
BThe UI becomes unresponsive
CThe program runs faster
DNothing changes
How do you listen for messages from a Web Worker in the main thread?
AUsing <code>worker.onmessage</code> event handler
BUsing <code>worker.listen()</code>
CUsing <code>worker.receive()</code>
DUsing <code>worker.onreceive</code>
Which of these is NOT true about Web Workers in Deno?
AThey share the same memory as the main thread
BThey run in a separate thread
CThey communicate via message passing
DThey can use ES modules with the right option
Explain how Web Workers help improve performance in Deno applications.
Think about how multitasking works in real life.
You got /4 concepts.
    Describe the steps to create and communicate with a Web Worker in Deno.
    Imagine sending and receiving letters between two friends.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using Web Workers in Deno?
      easy
      A. To create a new HTTP server
      B. To run tasks in parallel without blocking the main thread
      C. To manage file system permissions
      D. To handle database connections

      Solution

      1. Step 1: Understand Web Workers role

        Web Workers allow running scripts in background threads separate from the main thread.
      2. Step 2: Identify the benefit

        This prevents the main thread from freezing during heavy tasks, enabling parallel processing.
      3. Final Answer:

        To run tasks in parallel without blocking the main thread -> Option B
      4. Quick Check:

        Web Workers = Parallel tasks without blocking [OK]
      Hint: Web Workers run code in background threads [OK]
      Common Mistakes:
      • Thinking Web Workers handle HTTP or database tasks directly
      • Confusing Web Workers with main thread code
      • Assuming Web Workers manage permissions
      2. Which of the following is the correct way to send a message from the main thread to a Web Worker in Deno?
      easy
      A. worker.postMessage('Hello')
      B. worker.emit('Hello')
      C. worker.send('Hello')
      D. worker.message('Hello')

      Solution

      1. Step 1: Recall message sending method

        In Web Workers, the method to send data to the worker is postMessage.
      2. Step 2: Match correct syntax

        Among the options, only worker.postMessage('Hello') is valid and recognized.
      3. Final Answer:

        worker.postMessage('Hello') -> Option A
      4. Quick Check:

        Send message = postMessage [OK]
      Hint: Use postMessage to send data to workers [OK]
      Common Mistakes:
      • Using send() instead of postMessage()
      • Confusing emit() with event emitters
      • Trying to call message() which doesn't exist
      3. Consider this Deno Web Worker code snippet:
      const worker = new Worker(new URL('./worker.ts', import.meta.url).href, { type: 'module' });
      worker.onmessage = (e) => console.log('Result:', e.data);
      worker.postMessage(5);

      And the worker.ts contains:
      self.onmessage = (e) => {
        const num = e.data;
        self.postMessage(num * 2);
      };

      What will be printed in the console?
      medium
      A. Result: 10
      B. Result: 5
      C. Result: undefined
      D. No output, error occurs

      Solution

      1. Step 1: Understand message flow

        The main thread sends 5 to the worker. The worker receives it as num.
      2. Step 2: Calculate worker response

        The worker multiplies 5 by 2 and sends back 10. The main thread logs 'Result: 10'.
      3. Final Answer:

        Result: 10 -> Option A
      4. Quick Check:

        5 * 2 = 10 output [OK]
      Hint: Worker doubles input and sends back result [OK]
      Common Mistakes:
      • Assuming worker returns original number
      • Confusing onmessage event usage
      • Expecting error due to URL usage
      4. What is wrong with this Deno Web Worker code snippet?
      const worker = new Worker('./worker.ts', { type: 'module' });
      worker.postMessage('start');
      worker.onmessage = (e) => console.log(e.data);
      worker.terminate();
      medium
      A. Worker path './worker.ts' is invalid in Deno
      B. postMessage is called before onmessage, causing error
      C. Worker is terminated immediately, so no message is received
      D. Missing event listener for error events

      Solution

      1. Step 1: Analyze termination timing

        The worker is terminated right after sending the message, likely before it can respond.
      2. Step 2: Effect on message reception

        Because of immediate termination, the onmessage handler never receives data.
      3. Final Answer:

        Worker is terminated immediately, so no message is received -> Option C
      4. Quick Check:

        Terminate too soon = no response [OK]
      Hint: Terminate workers only after receiving messages [OK]
      Common Mistakes:
      • Thinking postMessage order causes error
      • Ignoring worker path resolution rules
      • Forgetting to handle errors but not critical here
      5. You want to process a large array of numbers in parallel using Deno Web Workers. Which approach correctly splits the work and collects results efficiently?
      hard
      A. Process the array in the main thread without workers for simplicity
      B. Create one worker and send the entire array repeatedly for each number
      C. Use a single worker and process numbers sequentially inside it
      D. Create multiple workers, send each a slice of the array, collect partial results, then combine them

      Solution

      1. Step 1: Understand parallel processing strategy

        Splitting the array into parts and assigning each to a separate worker allows true parallelism.
      2. Step 2: Collect and combine results

        Each worker returns partial results; the main thread combines them for the final output.
      3. Final Answer:

        Create multiple workers, send each a slice of the array, collect partial results, then combine them -> Option D
      4. Quick Check:

        Split work + combine results = efficient parallelism [OK]
      Hint: Split data among workers, then merge results [OK]
      Common Mistakes:
      • Sending full array multiple times wastes resources
      • Using one worker loses parallel benefit
      • Ignoring main thread processing slows app
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard