我正在使自己成为一个重试失败的承诺“链部分”的库 - 我收集要被调用的方法,并且只有在之前的成功之后才排队下一阶段。
概念上的四舍五入 - 我的问题更为根本。这是我到达调试的地方:
this.runningPromise
.then(function() {
return Promise.reject();
})
//;
//this.runningPromise
.then(this.promiseResolver.bind(this))
.catch(this.promiseRejector.bind(this))
;
作品,promiseRejector
开始。当我取消注释这两行时,不行。 promiseResolver
被召唤。
什么都找不到。在Windows,Chrome上使用browserify的Nodejs 6.10.3。
答案 0 :(得分:2)
如果取消注释两行意味着您每次调用this.runningPromise
两次并且每次都有自己的回调。
如果您对这些行进行了注释,那么它将充当一个承诺(以及相关的回调)
更好的是,您应该为变量分配承诺,然后您可以多次使用它。
let newPromise = this.runningPromise
.then(function() {
return Promise.reject();
});
newPromise
.then(this.promiseResolver.bind(this))
.catch(this.promiseRejector.bind(this));
使用上述代码,您可以多次使用newPromise
。
答案 1 :(得分:0)
this.runningPromise
不会改变,即this.runningPromise
引用的承诺从未被拒绝。因此,您必须将 new 承诺分配给新的参考:
let something = this.runningPromise
.then(function() {
return Promise.reject();
});
something
.then(this.promiseResolver.bind(this))
.catch(this.promiseRejector.bind(this));