Email:longsu2010 at yeah dot net
JavaScript的事件回调真的很棒,比如AJAX获取数据在数据返回时执行某函数,比如websocket获取数据后执行某函数,比如JSONP……
dojo的dojo/Deferred用于开启一个异步程序,对于封装通用组件特别有用。下面介绍dojo/Deferred的用法, 从一个小例子开始。(本例使用chrome)
require(["dojox/store/proxyStore", "dojo/Deferred"],function( ProxyStore, Deferred){
var deferred = new Deferred();
// 设置回调函数
deferred.then(function(args){
console.log(args);
},function(args){
console.log(args);
},function(args){
console.log(args);
});
// 更新状态
deferred.progress("progress");
// 正常完成
deferred.resolve("resolve");
// 有错误发生
// deferred.reject();
// 取消异步程序
// deferred.cancel();
});
可以看出使用Deferred需要先创建一个Deferred对象,之后用then方法设置该对象的回调函数,之后可以用例子中的其他几个函数来更新Deferred对象的状态。Deferred对象会根据不同的状态来调用不同的