关于这个问题,How do I fully intercept AND requeue http requests using dojo
我对类似的东西很感兴趣,dojo / aspect更适合吗?
查看此处的文档,http://dojotoolkit.org/reference-guide/1.9/dojo/aspect.html给出的示例显示了如何拦截dojo.xhr,但dojo.xhr自1.8 ??以来已弃用。并由dojo / request取代。对于新API,dojo文档建议使用dojo / request / notify。
我很困惑使用哪一个或我应该使用这两种方法?所以我可以涵盖一些遗留代码仍在使用旧的dojo.xhr API的所有情况。
我可以想到使用这两种方法的另一个复杂因素,可能是两个方法都被调用相同的xhr请求,从而重复了工作。
答案 0 :(得分:1)
dojo.xhr
已弃用,而dojo/request/xhr
为documentation for which you can find here。
您仍然可以在示例中使用dojo/aspect
。我created a fiddle that does just that。相关代码如下。
require([
'dojo/request/xhr',
'dojo/aspect'
], function(xhr, aspect) {
aspect.before(xhr, 'post', function() {
console.log('before POST');
});
// use xhr.post here...
});
如果您仍希望涵盖使用dojo.xhr
的旧代码,则可以在aspect
中提取您使用的函数并将其传递给两个对象:
function beforeXhr() {
// ...
}
aspect.before(dojo, 'xhr', beforeXhr);
aspect.before(xhr, 'post', beforeXhr);
我还没有想出如何在返回dojo/aspect
回调的函数上使用require
,这意味着您必须重复aspect
次'GET'调用,'PUT','DELETE'等等。如果有人知道如何在这个例子中使用aspect
函数对象,我很想知道。