拦截dojo xhr调用

拦截dojo xhr调用,dojo,xmlhttprequest,intercept,Dojo,Xmlhttprequest,Intercept,关于这个问题, 我对类似的东西感兴趣,dojo/aspect更适合吗 查看这里的文档,给出的示例展示了如何截取dojo.xhr,但是dojo.xhr自1.8以来就被弃用了??。并替换为dojo/request。对于新API,dojo文档推荐使用dojo/request/notify 我不知道该使用哪一种方法,还是应该同时使用这两种方法?因此,我可以介绍一些遗留代码仍在使用旧的dojo.xhr API的所有情况 我认为使用这两种方法的另一个复杂之处可能是,两种方法都是为同一个xhr请求调用的,因此

关于这个问题,

我对类似的东西感兴趣,dojo/aspect更适合吗

查看这里的文档,给出的示例展示了如何截取dojo.xhr,但是dojo.xhr自1.8以来就被弃用了??。并替换为dojo/request。对于新API,dojo文档推荐使用dojo/request/notify

我不知道该使用哪一种方法,还是应该同时使用这两种方法?因此,我可以介绍一些遗留代码仍在使用旧的dojo.xhr API的所有情况


我认为使用这两种方法的另一个复杂之处可能是,两种方法都是为同一个xhr请求调用的,因此重复了工作。

dojo.xhr
被弃用,取而代之的是
dojo/request/xhr

您仍然可以使用示例中的
dojo/aspect
。我有。有关守则如下

require([
    'dojo/request/xhr',
    'dojo/aspect'
], function(xhr, aspect) {
    aspect.before(xhr, 'post', function() {
        console.log('before POST');
    });

    // use xhr.post here...
});
如果您仍然希望介绍使用
dojo.xhr
的旧代码,可以提取在
方面使用的函数,并将其传递给两个对象:

function beforeXhr() {
    // ...
}

aspect.before(dojo, 'xhr', beforeXhr);
aspect.before(xhr, 'post', beforeXhr);

我还没有弄清楚如何在返回到
require
回调的函数上使用
dojo/aspect
,这意味着您必须重复
aspect
调用“GET”、“PUT”、“DELETE”等。如果有人知道如何对本例中的函数对象使用
aspect
,我很想知道。

看看源代码,dojo/request/xhr和dojo/request/utils,“GET”、“PUT”和“Delete”我相信只是xhr的别名,换句话说,它会在引擎盖下调用xhr。如果我错了,请纠正我。是的,但如果您使用,例如,
xhr.put
,则必须添加另一个
方面(xhr,'put',…)
调用。正如我在回答中所说,我不确定如何通过
require
回调将
aspect
xhr
等函数对象一起使用,因此这是必要的。