📅  最后修改于: 2023-12-03 15:24:59.890000             🧑  作者: Mango
在 JavaScript 中,我们可以通过 Promise 对象来管理异步操作和回调函数的执行。有时候,我们需要判断一个对象是否为 Promise 对象,以便做出相应的处理。本文将介绍如何写一个 JavaScript 程序来判断对象是否为 Promise。
Promise 对象有一个 then
方法,而且在 ES6 中使用 Promise.resolve
方法可以将一个对象转为 Promise 对象。因此,我们可以通过以下方法来判断一个对象是否为 Promise 对象:
function isPromise(obj) {
return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
}
上述方法用到了逻辑运算符 !!
,它的作用是将值转换为布尔类型。如果该值为真,则转换后为 true
;如果为假,则转换后为 false
。
该方法的逻辑为:
false
。then
方法,则认为它是 Promise 对象,返回 true
;否则返回 false
。下面是测试代码:
console.log(isPromise(null)); // false
console.log(isPromise(undefined)); // false
console.log(isPromise(123)); // false
console.log(isPromise('foo')); // false
console.log(isPromise({})); // false
console.log(isPromise([])); // false
console.log(isPromise(() => {})); // false
console.log(isPromise(Promise.resolve())); // true
const p = new Promise(() => {});
console.log(isPromise(p)); // true
测试结果:
false
false
false
false
false
false
false
true
true
通过判断对象是否具有 then
方法,我们可以判断一个对象是否为 Promise 对象。这种方式可以方便地应用在各种场景,如判断一个函数返回值是否为 Promise 对象等。