在dojo API文档中,我可以找到load
和error
的回调,但我错过了progress
的回调。
load: function(data) {
dojo.byId("response").innerHTML = "Form posted.";
},
error: function(error) {
dojo.byId("response").innerHTML = "Error...";
}
XMLHttpRequest API提供了注册progress
事件的事件监听器的可能性:
var oReq = new XMLHttpRequest();
oReq.addEventListener("progress", updateProgress, false);
oReq.addEventListener("load", transferComplete, false);
oReq.addEventListener("error", transferFailed, false);
oReq.addEventListener("abort", transferCanceled, false);
oReq.open();
// progress on transfers from the server to the client (downloads)
function updateProgress (oEvent) {...}
dojo是否有一些机制,类似于XMLHttpRequest API?
答案 0 :(得分:1)
查看dojo/xhr文档。它提到了只有在浏览器支持这些事件时才能处理进度事件。
以下是文档中的代码段。
dojo / request / xhr()会返回一个承诺,并使用响应的已处理数据来实现。如果提供错误,错误将被定向到errback。 进度数据将提供给进度处理程序(如果已提供)以及浏览器是否支持 XHR2进度事件。
require(["dojo/request/xhr"], function(xhr){
xhr("example.json", {
handleAs: "json"
}).then(function(data){
// Do something with the handled data
}, function(err){
// Handle the error condition
}, function(evt){
// Handle a progress event from the request if the
// browser supports XHR2
});
});
答案 1 :(得分:1)
new dojo/request
模块支持进度事件。它将自动在浏览器平台上调用新的dojo/xhr模块。
不要将这些API与旧的,已弃用的API混淆。模块的包含和调用方式存在重大差异:
RegistrySearch
)使用以下指南将代码转换为新API(可能需要更新到更新版本的Dojo):
更新:如果必须使用Dojo 1.6 ...
您有两种选择:
require(dojo.*)
事件的部分使用Dojo 1.6旁边的更现代的Dojo。新的AMD架构意味着新库与progress
回调块隔离。 AMD架构还意味着您只能加载新xhr所需的现代Dojo的最小部分。require()
事件功能反向移植到Dojo 1.6。您可以添加另一个回调和code doesn't seem that complex。 (不要忘记考虑差异,因为你没有使用承诺。)