JavaScript 返回一个对象是否像一个Promise

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程