when for Parallel Calls
when for Parallel Calls: free step-by-step lesson with examples, common mistakes, and interview tips — part of jQuery Tutorial on Toolliyo Academy.
On this page
jQuery Tutorial · Lesson 59 of 100
when for Parallel Calls
Setup & DOM ✓ → Events Effects AJAX ✓ → Perf & Integrate → Ship & Projects
Perf & Integrate · 3 — Harden · ~10 min · Traversal and Plugins
What is this?
$.when(a, b, ...) waits for multiple thenables. When all resolve, .done receives combined results; any reject trips .fail. Ideal for parallel GETs.
Why should you care?
QueryVerse headers often need user profile and notification count together before first paint.
See it live — copy this example
Examples include the jQuery 3.7 CDN. Paste into an HTML file or use Run Example to preview.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>QueryVerse</title>
<style>
body { font-family: system-ui, sans-serif; margin: 1.25rem; }
.box { padding: .75rem; border: 1px solid #ccc; border-radius: 8px; margin: .5rem 0; }
.muted { color: #666; }
button { margin-right: .35rem; margin-top: .35rem; }
input, select, textarea { margin: .25rem 0; }
table { border-collapse: collapse; width: 100%; }
th, td { border: 1px solid #ddd; padding: .4rem .55rem; text-align: left; }
.hidden { display: none; }
.row-odd { background: #f7f7f7; }
.active { font-weight: 700; }
.toast { background: #111; color: #fff; padding: .5rem .75rem; border-radius: 6px; }
</style>
</head>
<body>
<button type="button" id="go">Load user + todos in parallel</button>
<pre id="out" class="box muted"></pre>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$(function () {
$('#go').on('click', function () {
$('#out').text('Loading…');
$.when(
$.getJSON('https://jsonplaceholder.typicode.com/users/1'),
$.getJSON('https://jsonplaceholder.typicode.com/todos?userId=1')
).done(function (userRes, todosRes) {
// each res is [data, statusText, jqXHR]
var user = userRes[0];
var todos = todosRes[0];
$('#out').text(user.name + ' has ' + todos.length + ' todos (sample)');
}).fail(function () {
$('#out').text('One or more calls failed');
});
});
});
</script>
</body>
</html>
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- Arguments in done are arrays when waiting on jqXHR.
- For a single promise, done gets unwrapped values — know the difference.
- Abort both if the page unloads.
Practice next
- Load and read the combined summary.
- Break one URL and watch fail.
- Log userRes to see the triplet.
- Use $.when.apply($, arrayOfXhr) for dynamic lists.
- Prefer Promise.all in new code when allowed.
Remember
when waits on many promises. jqXHR results arrive as triplets. fail if any fail.
Header bootstrap
An Outlook Web–like QueryVerse shell loads profile and bell count together on first paint for a Kochi support team.
Outcome: $.when paints once both GETs finish.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!