0
我遇到了一个小问题,在Dojo 1.6中挂接和链接延迟ajax请求。代码看起来像Dojo 1.6延迟链接和挂接问题
login : function(data) {
var def = lang.hitch(this.authenticate, this.authenticate(data));
console.log(def); // [I]
return def;
},
authenticate : function(data) {
require([ "dojo/Deferred", "dojo/request/xhr", "dojo/_base/lang",
"dojox/encoding/digests/MD5" ], lang.hitch(this, function(Deferred, xhr,
lang, MD5) {
var data2send = lang.mixin(data, {
action : "authenticate",
password : "21232f297a57a5a743894a0e4a801fc3",
userId : data.username
});
return xhr(this.handlerUrl, {
handleAs : "json",
method : "POST",
sync : false,
data : data2send
});
}));
}
其中login()被调用。 Imho,它应该返回一个Deferred对象,它在authenticate()中的ajax-request完成后解析。因此,[I]中的日志记录应该给我一个Deferred-promise,但是Firebug将返回值记录为function()。我希望任何人都可以帮忙。
在此先感谢!
编辑: 另一个问题是,为什么def成为对象,这是由lang.hitch的第一个参数给出的。例如。在上面的代码中给出了“function()”。当我将第一个参数改为“this”时,日志给我“this” - 对象(“Object {...}”)本身。我认为hitch的机制不会影响返回的值,但只会将范围限制到第二个参数(这是所谓的函数)。我错了吗?!