我正在学习javascript中的类和继承。我认为以下是扩展现有对象的相当标准的方法,因为我从Object.create的MDN文档中获得了样式
我期待看到“确定”,然后看到“是!控制台中的“ Hello”,但出现此错误:
Uncaught TypeError: #is not a promise at new MyPromise ( :5:17) at :19:6
看起来Promise构造函数正在抛出异常,因为它可以告诉我给我初始化的对象不是一个简单的Promise。
我希望Promise构造函数初始化我的对象,就像它是一个Promise对象一样,这样我就可以扩展该类。他们为什么不编写Promise构造函数来使用这种通用模式?难道我做错了什么?为您加油!
MyPromise = function(message, ok) { var myPromise = this; this.message = message; this.ok = ok; Promise.call(this, function(resolve, reject) { if(this.ok) { console.log('ok'); resolve(myPromise.message); } else { console.log('not ok'); reject(myPromise.message); } }); }; MyPromise.prototype = Object.create(Promise.prototype); MyPromise.prototype.constructor = MyPromise; (new MyPromise('Hello', true)) .then(function(response) {console.log('Yay! ' + response);}) .except(function(error) {console.log('Aww! ' + error);});
我最初试图制作一个可以使用的BatchAjax类,例如:
(new BatchAjax([query1, query2])) .then(function(response) {console.log('Fires when all queries are complete.');});
真的有点有趣。