根据Chrome开发工具,我需要一些帮助来调试为什么超时属性被传递为{}。
function request(options) {
let canceller = this.$q.defer();
if (this.canceller) {
console.error('CANCELLING EARLIER REQUEST', this.canceller);
this.canceller.resolve();
}
options.timeout = this.canceller.promise;
console.warn('options =', options);
console.warn('Submitting request : :: : ::);
this.$http.post(url, options)
.then( resp => {
console.warn('Request complete!');
this.canceller = null;
});
}
我无法弄清楚如何创建一个测试环境,但是如果你要两次触发这个函数,这就是console.logs的用法。
options Object {timeout: Promise}
Submitting request : :: : ::
CANCELLING EARLIER REQUEST Deferred {promise: Promise} //second request fired
options Object {timeout: Promise}
Submitting Request : :: : ::
Request Complete! //this is the first request
Request Complete! //this is the second request
以下是我在每个请求的网络标签中看到的内容:
Request payload:
{
timeout: {}
}
注意,超时是一个空对象 - 这就是我的第二个请求没有取消第一个请求的原因吗?在我的应用程序的某个地方是否有一个$ httpProvider擦洗了这个参数?