JavaScript 中检查函数是否返回的 Promise
要检查函数是否返回 Promise,请检查函数是否异步或调用它并检查函数是否返回具有函数类型 then
属性的对象。 如果满足任一条件,该函数将返回一个 Promise。
// ✅ Promise check
function isPromise(p) {
if (typeof p === 'object' && typeof p.then === 'function') {
return true;
}
return false;
}
// ✅ Check if return value is promise
function returnsPromise(f) {
if (
f.constructor.name === 'AsyncFunction' ||
(typeof f === 'function' && isPromise(f()))
) {
console.log('✅ Function returns promise');
return true;
}
console.log('⛔️ Function does NOT return promise');
return false;
}
// 👇️ Examples
async function exampleAsync() {}
function example() {}
function examplePromise() {
return new Promise(resolve => {
resolve(42);
});
}
console.log(returnsPromise(exampleAsync)); // 👉️ true
console.log(returnsPromise(example)); // 👉️ false
console.log(returnsPromise(examplePromise)); // 👉️ true
代码片段中的第一个函数检查传入的值是否为 Promise。
第二个函数将另一个函数作为参数并检查它的返回值是否是一个 promise。
if 语句中的第一个条件检查函数是否是异步的。
每个异步函数都会返回一个 promise,因此如果该函数是异步的,我们会立即断定它会返回一个 promise。
我们的第二个条件检查传入的值是否是一个函数并调用它,将结果传递给 isPromise() 函数。
检查非异步函数是否返回承诺的唯一方法是调用它。
请注意
,如果它改变状态,调用函数可能不安全,例如 写入数据库。
有两种方法可以检查一个函数是否返回一个 promise:
-
检查函数是否异步——然后它会
100%
地返回一个 promise -
检查函数的返回值是否是具有函数类型
then
属性的对象。
相关文章
使用 CSS 和 JavaScript 制作文本闪烁
发布时间:2023/04/28 浏览次数:146 分类:CSS
-
本文提供了使用 CSS、JavaScript 和 jQuery 使文本闪烁的详细说明。
在 PHP 变量中存储 Div Id 并将其传递给 JavaScript
发布时间:2023/03/29 浏览次数:69 分类:PHP
-
本文教导将 div id 存储在 PHP 变量中并将其传递给 JavaScript 代码。
在 JavaScript 中从字符串中获取第一个字符
发布时间:2023/03/24 浏览次数:93 分类:JavaScript
-
在本文中,我们将看到如何使用 JavaScript 中的内置方法获取字符串的第一个字符。
在 JavaScript 中获取字符串的最后一个字符
发布时间:2023/03/24 浏览次数:141 分类:JavaScript
-
本教程展示了在 javascript 中获取字符串最后一个字符的方法