dojo学习笔记8.延迟
延迟入门
dojo.Deferred
如下主题:
1、定义
2、状态和触发
3、ajax
4、链式调用
5、合并调用
var def = new dojo.Deferred()
def.then(function(res){ ... },function(err){...});
如果两个回调函数时,第二个是错误时执行。
状态有三种:
1)unresolved 未处理,对象定义后的默认状态
2)resolved 已处理,执行def.resolve()后的状态,调用第一个回调函数;
2)rejected 驳回,执行def.rejected()后的状态,调用第二个回调函数;
dojo在Ajax函数中使用到延迟,调用dojo.xhrGet或dojo.xhrPost时,返回延迟对象。
比如下面代码
dojo.xhrGet({
url:"...",
load:function(content){...}
})
可以写成:
var def = dojo.xhrGet({url:"..."});
def.then(function(content){...});
也可直接写成
dojo.xhrGet(url:"...").then(function(content){...});
还有另一种情况:异步发送两次请求, 返回后在一个回调函数中处理。即延迟列表(DeferredList)
var def1 = dojo.xhrGet({url:"..."});
var def2 = dojo.xhrGet({url:"..."});
var defs = dojo.DeferredList([def1,def2]);
defs.then(function(results){
var result1 = results[0][1];
var result2 = results[1][1];
...
})

