Ext.Deferred使用教程
Ext.Deferred使用教程
前几天写的,今天才贴出来。主要是Deferred的使用,这个需要与ES6的语法进行对比学习。
生成deferred
下面是个简单的例子,参考手册上新的。
deleteUserDevices:function(){
var me=this;
var deferred = new Ext.Deferred();
if(!me.userDeviceList){
return deferred.reject("未选择任何数据.");
}
var ids=Ext.Array.map(me.userDeviceList,function(item){
return item.id;
});
Ext.Ajax.request({
method:"DELETE",
url:SHINEECALLHOST+'/api.php/records/hospital_user_devices/'+ids.join(),
success: function(response, opts) {
console.log(response.responseText);
deferred.resolve();
}
});
return deferred.promise;
},
触发deferred
使用下面的方式,进行触发。注意参数形式,deleteUserDevices函数内部的this,需要根据第二个参数确定。
Ext.Deferred.sequence([me.deleteUserDevices,me.submitUserDevices],me);
使用感受
对于不需要异常捕捉的话,还不如直接传入一个函数参数进去。这样没有什么理解难度。即如下:
submitUserDevices:function(id,fn){
var me=this;
Ext.Ajax.request({
method:"POST",
params:{DeviceID:id,UserID:me.currentEditRecordId},
url:SHINEECALLHOST+'/api.php/records/hospital_user_devices/',
success: function(response, opts) {
console.log(response.responseText);
fn();//调用回调函数
}
});
},
后来发现,删除、添加新的,之间没有严格的顺序依赖。