Detect if Value Is a Promise in Node.js and JavaScript

You may want to add different behavior for different input types when working with functions in Node.js and JavaScript. For example, if an input is a promise, you want to resolve it first before moving on with the actual processing.

This tutorial shows you how to detect whether a given value is a promise.

Node.js Series Overview

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js
  18. Check If a String Is in Lowercase in JavaScript or Node.js
  19. Check If a String is in Uppercase in JavaScript or Node.js
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js
  24. How to Count Words in a File
  25. How to Shuffle the Characters of a String in JavaScript or Node.js
  26. Append Characters or Words to a String in JavaScript or Node.js
  27. Check if a String is Empty in JavaScript or Node.js
  28. Ensure a String Ends with a Given Character in JavaScript or Node.js
  29. Left-Trim Characters Off a String in JavaScript or Node.js
  30. Right-Trim Characters Off a String in JavaScript or Node.js
  31. Lowercase the First Character of a String in JavaScript or Node.js
  32. Uppercase the First Character of a String in JavaScript or Node.js
  33. Prepend Characters or Words to a String in JavaScript or Node.js
  34. Check if a String is a Number
  35. Convert a String to Buffer
  36. Prevent Line Breaks in String Template Literals
  37. How to Implement a Custom `toString` Method (Coming soon)
  38. What Is `Symbol.toStringTag` and How to Use It (Coming soon)

Detect if Value Is a Promise

You may heard the term “thenable” related to promises in JavaScript. This term originates from the .then() method. A promise describes a placeholder for an asynchronous computation that only returns the value to a given callback if you call .then(callback).

You can use this behavior to determine whether a given value is a promise. Because promises implement the .then() method, you can check whether it’s a function. If yes, it’s a promise!

Here’s a sample function determining if an input is a promise:

/**
 * Determine whether the given `promise` is a Promise.
 *
 * @param {*} promise
 *
 * @returns {Boolean}
 */
function isPromise(promise) {  
    return !!promise && typeof promise.then === 'function'
}

The isPromise function checks whether the promise argument exists and if yes, does it provide a .then() method. If both checks are true, you have a promise.

Using the isPromise() Function

Here are some examples showing how to use the isPromise function with different inputs. The returned value is a comment below the method call:

isPromise(new Promise(() => {}))  
// true

async function asyncFn () {  
  return 'async'
}
isPromise(asyncFn())  
// true

isPromise()  
// false

isPromise(1)  
// false

isPromise('no')  
// false

More Goodies

The isPromise function is part of the supercharge/goodies package. You can destructure the isPromise method and other goodies from the package. Well, you can copy and paste the function above to your codebase 😃

Enjoy!


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.