因此,我想扩展Promise以获得“进度”部分,以便我可以使用Promise为我的异步任务报告它的进度.
因此我像这样扩展了Promise:
class promisePro extends Promise {
constructor(fn) {
super(function (resolve,reject) {
fn(resolve,reject,this._progress.bind(this));
});
}
_progress(v) {
if (this.progressCB)
this.progressCB(v);
}
progress(fn) {
this.progressCB = fn;
}
}
并使用它:
function ptest() {
return new promisePro((resolve,progress) => {
setTimeout(() => {
progress(0.3)
},1000)
setTimeout(() => {
progress(0.6)
},2000)
setTimeout(() => {
progress(0.9)
},3000)
setTimeout(() => {
resolve(1)
},4000)
})
}
并使用itt:
ptest().then((r) => {
console.log('finiished: ' + r)
}).progress((p) => {
console.log('progress: ' + p)
})
并得到此错误:
ptest().then((r) => {
^
TypeError: Promise resolve or reject function is not callable
我在这做错了什么?
我使用的是节点7.5,更新到8.4.两个版本都有错误.
谢谢.