尝试使用{timeout:canceller.promise}

时间:2017-02-24 16:41:43

标签: javascript angularjs http

根据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擦洗了这个参数?

0 个答案:

没有答案