Home jQuery Deferred resolve() jQuery Deferred resolve() Method Definition
What Is resolve()? deferred.resolve([args]) settles a Deferred as resolved (since jQuery 1.5) and runs done callbacks from done() or then() . Optional args are passed to those handlers. It returns the same Deferred for chaining.
deferred.resolve([args…])
resolve() → settle as success (owner only)
done() → listen for success
reject() → settle as failure (opposite)
state locks after resolve — once only
return promise() so callers cannot resolve Approach
How to Use resolve() Own the Deferred; resolve when the work succeeds; let others listen.
Create a Deferred (keep it private in your helper). Attach done() / then() (or return promise() for callers). On success, call resolve(args…) with useful results. Do not call reject() afterward — the Deferred is already settled. Piece Required? Role argsOptional Values passed to every done callback Return — Same Deferred (chainable) Since — jQuery 1.5
Pseudocode dfd = Deferred
handlers = done callbacks (from done / then)
resolve(args…):
if dfd already settled: return // ignore
state = "resolved"
remember args
for each done handler (in add order):
handler(args…)
later done(fn):
if already resolved: fn(args…) immediately
else: queue fn Reference
Cheat Sheet Keep these facts handy when signaling async success.
Topic Detail Syntax deferred.resolve([args…])Triggers done(), success branch of then(), always()State "resolved" — settles onceLate done() Runs immediately with the resolve args vs done() resolve fires; done listensvs reject() Success vs failure settlement Since jQuery 1.5
Try it
Live Preview See how resolve() drives done() and once-only settlement.
Code
jQuery Examples Short, copy-ready snippets. Open the browser console, or use Try It Yourself for a live editor.
1. resolve + done 2. Multiple args 3. Late done() 4. Once settled 5. Resolve behind promise() Example 1 — resolve() + done() Settle as successful and read the result in a done handler.
var dfd = $.Deferred();
dfd.done(function (result) {
console.log(result); // Operation complete
});
dfd.resolve("Operation complete"); How It Works Register done. The handler waits for success.Call resolve. Pass a clear result value.Handler runs. It receives that same value.State locks. The Deferred is now "resolved".Example 2 — Multiple Resolve Arguments Pass several values; every done callback receives them in order.
var dfd = $.Deferred();
dfd.done(function (id, name) {
console.log(id + ": " + name); // 42: Alex
});
dfd.resolve(42, "Alex"); How It Works Plan the shape. Done handlers expect (id, name).Resolve with two args. resolve(42, "Alex").Receive both. The callback logs them together.Keep it consistent. Use the same arg order everywhere you resolve.Example 3 — Late done() After Resolve Handlers added after resolution run immediately with the resolve args.
var dfd = $.Deferred();
dfd.resolve("already done");
dfd.done(function (result) {
console.log(result); // already done
}); How It Works Resolve first. State becomes resolved; args are stored.Attach done late. Official rule: it runs immediately.Same args. You still get "already done".Useful for UI. Late listeners still see the final result.Example 4 — Settle Once (Resolve After Reject Ignored) After reject(), a later resolve() does nothing.
var dfd = $.Deferred();
var lines = [];
dfd.done(function (v) { lines.push("done: " + v); });
dfd.fail(function (v) { lines.push("fail: " + v); });
dfd.reject("nope");
dfd.resolve("ok"); // ignored
console.log(lines.join(" | ")); // fail: nope
console.log(dfd.state()); // rejected How It Works Attach both paths. done and fail are ready.Reject first. State becomes "rejected"; fail runs.Resolve later. Ignored — done never runs.Rule. First settle wins; the other is a no-op.Example 5 — Resolve Behind promise() Only the owner resolves; callers listen on the returned Promise.
function loadFile(ok) {
var dfd = $.Deferred();
setTimeout(function () {
if (ok) dfd.resolve("file.txt");
else dfd.reject("missing file");
}, 200);
return dfd.promise();
}
loadFile(true).done(function (name) {
console.log(name); // file.txt
}); How It Works Private Deferred. Only loadFile can call resolve.Return Promise. Callers get promise() , not settle methods.Success path. ok is true → resolve("file.txt").Listen outside. done on the Promise prints the name. Edge Cases & Pitfalls Check these before relying on resolve() in real projects.
once Settles only once After resolve or reject, further settle calls are ignored. Check state() if you need to know which won.
owner Only the owner should resolve Official guidance: return promise() so other code cannot change state with resolve().
args Pass useful result data Empty resolve() works but often forces handlers to look elsewhere for data. Prefer the actual payload.
Compatibility
Browser Support deferred.resolve() needs jQuery 1.5+ loaded. It works across jQuery 1.5–3.x as the standard way to settle a Deferred as successful.
✓ jQuery 1.5+
deferred.resolve() Works in Chrome, Firefox, Safari, and Edge when jQuery 1.5+ is loaded. Pair with done() or then() to handle the result.
Google Chrome All versions · Desktop & Mobile
Full support
Mozilla Firefox All versions · Desktop & Mobile
Full support
Apple Safari All versions · macOS & iOS
Full support
Microsoft Edge All versions · Chromium & Legacy
Full support
Internet Explorer IE 6+ · Legacy environments
Full support
Opera All modern versions
Full support resolve() Universal
Bottom line: Safe wherever jQuery Deferreds exist. Keep resolve() private; expose promise() to callers.
Analysis
Performance Notes Approach Cost Best for resolve(args)O(handlers) Normal success settlement Many done handlers Each runs once Keep handlers small Resolve after settle No-op Harmless but wasteful — avoid
Resolution cost is dominated by your done handlers (DOM updates, routing), not by resolve() itself. Pass compact results unless a large payload is required.
Remember
Key Takeaways Role: settle a Deferred as successful and run done callbacks.
Pair: resolve fires; done / then listen.
Once: after settle, later resolve/reject are ignored.
Safety: return promise() so callers cannot resolve.
One line: resolve(args) marks success — keep it private, pass clear results, listen with done().
Frequently Asked Questions What does deferred.resolve() do? resolve() settles the Deferred as successful and runs doneCallbacks from done() or then(). Optional args are passed to those handlers. The state becomes resolved and stays locked.
How is resolve() different from done()? resolve() is called by the Deferred owner to signal success. done() registers a listener that runs when resolution happens. resolve fires; done listens.
Can I resolve after reject? No. A Deferred settles once. After reject(), later resolve() is ignored. After resolve(), later reject() is ignored.
What can I pass to resolve()? Any values — a string, object, array, or multiple arguments. Each done callback receives the same args from the resolve() call.
What if I add done() after resolve()? Late done() handlers run immediately with the arguments that were passed to resolve() — same idea as late fail() after reject().
Should callers be able to resolve()? Usually no. Keep the Deferred private and return promise() so outside code can attach done/fail but cannot settle the operation.
About the author Developer, cloud engineer, and technical writer
I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.
9 people found this page helpful
Helpful Share Copy link Suggestion