有没有办法像这样处理多个xhr请求?对于一个xhr
,有一个函数内置但多个请求?
答案 0 :(得分:6)
dojo.xhr返回dojo.Deferred,Deferred是回调等的包装器。因此,您的案例中的关键功能是dojo.xhr({parameters})。 then(callbackFunction)。
虽然我们经常希望通过简单的民意调查和计数器快捷方式实现并行XHR,但Dojo也有这个,就像Craig通知DeferredList一样;
你将发射两次XHR,每次调用返回一个处理程序,引用它们。创建一个列表,将这些引用作为参数,在数组中收集。然后作为最后的触摸,在列表上添加“然后”调用,
var dXhr1 = dojo.xhrGet({ url: ... });
var dXhr2 = dojo.xhrGet({ url: ... });
var dList = new dojo.DeferredList([dXhr1, dXhr2]);
dList.then(function(arrayOfValues) {
var res = "Result: succes?+"arrayOfValues[0][0].toString()+":"+arrayOfValues[0][1]+", "+
succes?+"arrayOfValues[1][0].toString()+":"+arrayOfValues[1][1]+";
console.log(res);
});
或链式
new dojo.DeferredList([
dojo.xhrGet({ url: ... }),
dojo.xhrGet({ url: ... })
]).then(function(res) { console.log(res); });
答案 1 :(得分:4)
DeferredList
可以满足您的需求。
http://dojotoolkit.org/reference-guide/1.7/dojo/DeferredList.html
答案 2 :(得分:1)
难道你不能用内部计数器发出一个命中功能的回调吗?当该计数器达到2时,两个回调都已完成?