jQuery Deferred isResolved() Method

Beginner
5 min read
Updated: Oct 2026
4 examples
Live preview

What Is isResolved()?

deferred.isResolved() was a boolean check: true after resolve() / resolveWith(), otherwise false. It took no arguments. Today, use state() instead.

Remember
// OLD (jQuery 1.5–1.7 only — removed in 1.8)
dfd.isResolved()  → true | false

// MODERN replacement
dfd.state() === "resolved"

state(): "pending" | "resolved" | "rejected"
NeedUse (today)
Was it resolved?dfd.state() === "resolved"
Was it rejected?dfd.state() === "rejected"
React to successdfd.done(fn)

How to Check Resolved State

Prefer state() (since jQuery 1.7). Call it after the Deferred may have settled.

  1. Create or receive a Deferred / Promise.
  2. Call dfd.state() at a checkpoint (after resolve, or inside done).
  3. Compare with === "resolved" for the old isResolved() meaning.
  4. For reactions (UI updates, follow-up work), register done() instead of polling.
PieceRequired?Role
DeferredYesObject whose status you inspect
ArgumentsNonestate() / old isResolved() take none
Return (modern)—"pending" | "resolved" | "rejected"

Pseudocode

Pseudocode
function isResolved(deferred):          // legacy idea
    return deferred.state() === "resolved"

// True only after resolve / resolveWith
// False while pending or after reject

Cheat Sheet

Quick facts for status checks and the removal timeline.

TopicDetail
Old syntaxdeferred.isResolved()
Added / gone1.5 → deprecated 1.7 → removed 1.8
Modern checkdfd.state() === "resolved"
Returns (old)Boolean
True whenAfter resolve() / resolveWith()
False whenPending or rejected
Best reaction APIdone() / then() — not polling

Live Preview

Settle a Deferred and see state() === "resolved" (modern isResolved).

Uses state() — isResolved() is not available in modern jQuery.

Result
state(): resolved
isResolved?: true

jQuery Examples

All demos use state() === "resolved" so they work on current jQuery. Open DevTools Console, or use Try It Yourself.

Example 1 — After resolve()

Once resolved, the modern check returns true.

jQuery
var dfd = $.Deferred();
dfd.resolve("Request successful");

var isResolved = dfd.state() === "resolved";
console.log(dfd.state());   // "resolved"
console.log(isResolved);   // true
Try It Yourself

How It Works

  1. Create a pending Deferred.
  2. Resolve with a value — state becomes "resolved".
  3. Compare state() === "resolved" (old isResolved()).
  4. Result is true for that Deferred forever after.

Example 2 — Still Pending

Before settle, the check is false.

jQuery
var dfd = $.Deferred();

console.log(dfd.state());                 // "pending"
console.log(dfd.state() === "resolved");  // false
Try It Yourself

How It Works

  1. Fresh Deferred starts as "pending".
  2. No resolve yet — nothing has succeeded.
  3. Check === "resolved" → false.
  4. Tip: Do not treat pending as success or failure.

Example 3 — After reject()

Failure is not resolution — the check stays false.

jQuery
var dfd = $.Deferred();
dfd.reject("Network error");

console.log(dfd.state());                 // "rejected"
console.log(dfd.state() === "resolved");  // false
Try It Yourself

How It Works

  1. Reject settles as failure → "rejected".
  2. Resolved? No — state is locked to rejected.
  3. Compare still yields false.
  4. Use === "rejected" (or old isRejected) for failure checks.

Example 4 — Prefer done() Over Polling

React to success with a callback; use state() only when you need a snapshot.

jQuery
var dfd = $.Deferred();

dfd.done(function (value) {
  console.log("handled: " + value);
  console.log("resolved?: " + (dfd.state() === "resolved"));
});

dfd.resolve("ok");
// handled: ok
// resolved?: true
Try It Yourself

How It Works

  1. Register done(fn) for the success path.
  2. Resolve triggers the handler with the value.
  3. Inside done, state() is already "resolved".
  4. Pattern: callbacks for behavior; state() for debugging / guards.

Edge Cases & Pitfalls

Avoid these mistakes when checking Deferred status.

removed

Do not call isResolved() on jQuery 1.8+

The method is gone. Calling it throws. Always use state() === "resolved".

poll

Do not poll in a tight loop

Spinning on state() wastes CPU. Prefer done() / always() for async completion.

timing

Pending is still false

Checking immediately after starting a timer or AJAX returns false until resolve runs.

once

State never flips back

After resolve or reject, later settle calls are ignored. Status stays locked.

Browser Support

deferred.isResolved() existed only in jQuery 1.5–1.7 (deprecated 1.7, removed 1.8). Modern pages must use deferred.state() (since 1.7), which works in all browsers with current jQuery.

✓ Removed · use state()

deferred.isResolved()

Legacy API only. Current jQuery (1.8+) exposes state() — compare with "resolved" for the same boolean idea.

N/A Legacy API
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
state() Use this

Bottom line: Do not call isResolved() in modern code. Write dfd.state() === "resolved" instead.

Performance Notes

ApproachCostBest for
state() === "resolved"O(1)Guards / debugging
done(fn)O(1) registerReacting to success
Polling state()WastefulAvoid

A single state() read is cheap. The cost is wrong design — polling instead of callbacks.

Key Takeaways

  • Meaning: true only after the Deferred was resolved.
  • Modern: dfd.state() === "resolved".
  • Removed: isResolved() is gone since jQuery 1.8.
  • React: use done() for success; state() for snapshots.

One line: isResolved() is legacy — write dfd.state() === "resolved" and prefer done() for handling success.

Frequently Asked Questions

isResolved() returned true when the Deferred had been resolved (success path), and false while pending or after a rejection. It took no arguments.
No. It was deprecated in jQuery 1.7 and removed in 1.8. In current jQuery, use dfd.state() === "resolved" instead.
Call deferred.state(). It returns "pending", "resolved", or "rejected". Compare with === "resolved" for the old isResolved() meaning.
No. done() registers a callback for when resolution happens. isResolved() (and state()) are synchronous status checks — they do not listen for future resolves.
At known checkpoints — after resolve(), inside done(), or for debugging. Prefer done()/then() for reacting to success instead of polling.
No. Once settled, the state is locked. state() is "resolved" only after resolve()/resolveWith(), never after reject().

Next: notify()

Send progress updates while a Deferred is still pending.

notify() tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

8 people found this page helpful