Skip to content

Instantly share code, notes, and snippets.

@tyru
Last active August 13, 2025 15:55
Show Gist options
  • Select an option

  • Save tyru/29360dfa475d2fefaf6c4655a93c2cb0 to your computer and use it in GitHub Desktop.

Select an option

Save tyru/29360dfa475d2fefaf6c4655a93c2cb0 to your computer and use it in GitHub Desktop.

Revisions

  1. tyru revised this gist Feb 15, 2017. 1 changed file with 10 additions and 2 deletions.
    12 changes: 10 additions & 2 deletions promise-is-resolved.js
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    function delay(msec, value) {
      return new Promise(done => window.setTimeout(() => value, msec));
    return new Promise(done => window.setTimeout((() => done(value)), msec));
    }

    function isResolved(promise) {
    @@ -15,5 +15,13 @@ function isFinished(promise) {
    }


    isFinished(promise).then(result => console.log(result ? "Resolved" : "Not resolved"));
    isFinished(Promise.resolve(42)).then(result => console.log(result ? "Resolved" : "Not resolved"));
    // => "Resolved"

    isFinished(delay(100)).then(result => console.log(result ? "Resolved" : "Not resolved"));
    // => "Not resolved"

    isFinished(delay(1)).then(result => console.log(result ? "Resolved" : "Not resolved"));
    // => "Resolved"
    // oh...

  2. tyru created this gist Feb 13, 2017.
    19 changes: 19 additions & 0 deletions promise-is-resolved.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    function delay(msec, value) {
      return new Promise(done => window.setTimeout(() => value, msec));
    }

    function isResolved(promise) {
      return Promise.race([delay(0, false), promise.then(() => true, () => false)]);
    }

    function isRejected(promise) {
      return Promise.race([delay(0, false), promise.then(() => false, () => true)]);
    }

    function isFinished(promise) {
      return Promise.race([delay(0, false), promise.then(() => true, () => true)]);
    }


    isFinished(promise).then(result => console.log(result ? "Resolved" : "Not resolved"));