JavaScript 返回一个对象是否像一个Promise
在JavaScript中, Promise(承诺) 是连接生成代码和消费代码的对象。简单来说,JavaScript中的Promise与现实生活中的承诺是相同的。当一个Promise被创建时,我们可以期望有3个条件或者说结果:
- 解决(resolve)
- 拒绝(reject)
- 挂起(pending)
如上所述,当一个Promise被创建时,我们要么会得到该Promise被实现(即Promise被 解决(resolve) ),要么如果结果不如预期,即Promise不能被实现,它将被 拒绝(reject) 。而当承诺既没有被解决也没有被拒绝时,这种状态被称为 挂起(pending) 。
语法:
var promise = new Promise(function(resolve, reject) {
(the producing code)
});
在本文中,我们将确定一个JavaScript对象是否是一个Promis。现在有许多方法可以识别它,让我们看看它们是什么以及如何轻松地识别一个Promis。
方法:
- 取一组变量和对象。
- 将这些值传递给一个名为isPromise()的函数,该函数实际上检查不同的条件并识别一个Promis。
方法1:使用typeof操作符
示例:
<script>
//Checking for a promise
var prom = new Promise(function(resolve, reject) {
resolve();
});
var num = 10;
var name = "geeksforgeeks";
var object = {
site: "geeksforgeeks"
};
console.log(isPromise(prom));
console.log(isPromise(num));
console.log(isPromise(name));
console.log(isPromise(object));
function isPromise(p) {
return Boolean(p &&
typeof p.then === "function");
}
</script>
输出:
true
false
false
false
方法2
通过检查传递的值 p 是否是一个对象,并检查 p.then() 是否是一个函数。
示例:
<script>
// Checking for a promise
var prom = new Promise(function(resolve, reject) {
resolve();
});
var num = 10;
var name = "geeksforgeeks";
var object = {
site: "geeksforgeeks"
};
console.log(isPromise(prom));
console.log(isPromise(num));
console.log(isPromise(name));
console.log(isPromise(object));
function isPromise(p) {
return !!p && (typeof p === 'object'
|| typeof p === 'function')
&& typeof p.then === 'function';
}
</script>
输出:
true
false
false
false
方法3
通过检查Promise.resolve(p)== p。
示例:
<script>
// Checking for a promise
var prom = new Promise(function(resolve, reject) {
resolve();
});
var num = 10;
var name = "geeksforgeeks";
var object = {
site: "geeksforgeeks"
};
console.log(isPromise(prom));
console.log(isPromise(num));
console.log(isPromise(name));
console.log(isPromise(object));
function isPromise(p) {
if (Promise && Promise.resolve) {
return Promise.resolve(p) == p;
}
}
</script>
输出:
true
false
false
false
极客教程