0

关于这个问题,如何使用 dojo 完全拦截和重新排队 http 请求

我对类似的东西感兴趣,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 请求调用,从而重复了工作。

4

1 回答 1

1

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,您可以提取您使用的函数aspect并将其传递给两个对象:

function beforeXhr() {
    // ...
}

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

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

于 2013-10-18T00:27:35.227 回答