我可以在JavaScript中创建自己的“ then()”函数并执行它吗?

时间:2019-04-16 06:02:51

标签: javascript promise es6-promise asynchronous-javascript

我正在阅读有关Java Promises的教程。我在很多地方看到了then()方法的用法。

当我编写以下代码时,在控制台的__proto__部分下看到了“ then()”函数。

const myPromise = new Promise(function(resolve, reject) {});
console.log(myPromise);

但是当我编写下面的代码时,我无法观察到相同的“ then()”函数,

class Car {
   constructor(color, type, doors) {
      this.color = color;
      this.type = type;
      this.doors = doors
   }
}
const myCar = new Car('blue', 'sedan', '4');
console.log(myCar);

所以,我在想,我们可以在Javascript中创建自己的then()函数并执行它吗?。

2 个答案:

答案 0 :(得分:1)

这是因为在创建承诺时,__proto__指向Promise.prototype 当您使用类创建对象时,__proto__指向Object.prototype

有关更多信息,请阅读此https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

是的,我们可以创建自己的then函数并执行它,但是我们不应该这样做,除非您确切地知道自己在做什么

下面是创建自己的then方法的示例

class myObj extends Object {
  then() {
    console.log('then is called');
  }
}

var mo = new myObj()

现在您可以致电mo.then()

答案 1 :(得分:1)

看看this博客文章。您应该对完成后的承诺有一个非常扎实的想法。