dojo.Deferred 管理回调函数

本文介绍了Dojo提供的Deferred对象,一种处理异步调用的强大工具。详细讲解了Deferred对象的三种状态:未解决状态、解决状态及拒绝状态,并通过示例展示了如何使用then方法注册回调函数。

dojo.Deferred 是一个Dojo提供给我们用来处理异步调用(例如Ajax)的强大工具. 简单来说,一个Deferred对象它会等待一段时间再去执行指定的调用,直到某个特定的事件发生或者前一个动作完成

Deferred对象有三个状态,初始化时是"unresolve” 状态,当它所等待的事件发生时, 进入"resolve" 状态, 第三种状态是出错状态,即该事件没有按照预期的发展,例如服务器端返回了错误消息,也称reject 状态. 

创建Deferred对象后,我们可以通过调用该对象的then方法注册一个回调函数,表示当这个Deferred对象等待的某个事件发生时(resolve),就调用该回调函数。then 方法还接受第二个参数,可以制定当事件失败或出错时(reject)时调用的出错回调函数 . 

var def = new dojo.Deferred(),
userlist = dojo.byId("userlist");

def.then(function(res){
// This will be called when the deferred
// is resolved
dojo.forEach(res, function(user){
dojo.create("li", {
id: user.id,
innerHTML: user.username + ": " + user.name
}, userlist);
});
},function(err){
// This will be called when the deferred
// is rejected
dojo.create("li", {
innerHTML: "Error: " + err
}, userlist);
});

dojo.xhrGet({
url: "users.json",
handleAs: "json",
load: function(res){
// Resolve when content is received
def.resolve(res);
},
error: function(err){
// Reject on error
def.reject(err);
}
});




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值