summaryrefslogtreecommitdiff
path: root/javascript/videojs/src/js/utils/promise.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/src/js/utils/promise.js')
-rw-r--r--javascript/videojs/src/js/utils/promise.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/javascript/videojs/src/js/utils/promise.js b/javascript/videojs/src/js/utils/promise.js
new file mode 100644
index 0000000..d488356
--- /dev/null
+++ b/javascript/videojs/src/js/utils/promise.js
@@ -0,0 +1,28 @@
+
+/**
+ * Returns whether an object is `Promise`-like (i.e. has a `then` method).
+ *
+ * @param {Object} value
+ * An object that may or may not be `Promise`-like.
+ *
+ * @return {boolean}
+ * Whether or not the object is `Promise`-like.
+ */
+export function isPromise(value) {
+ return value !== undefined && value !== null && typeof value.then === 'function';
+}
+
+/**
+ * Silence a Promise-like object.
+ *
+ * This is useful for avoiding non-harmful, but potentially confusing "uncaught
+ * play promise" rejection error messages.
+ *
+ * @param {Object} value
+ * An object that may or may not be `Promise`-like.
+ */
+export function silencePromise(value) {
+ if (isPromise(value)) {
+ value.then(null, (e) => {});
+ }
+}