大家好,又见面了,我是你们的朋友全栈君。
接下来是第一个高峰,就是把原来的ajax实现,用yui3的io 来写。而datatable 当前使用的是connection。
这里是需要重写的部分。(除非贪图简便,直接引入connection)
下面是直接修改后的代码。io-base是必须要require的。
var sUri = (isPost || !lang.isValue(oRequest)) ? sLiveData : sLiveData+”?”+oRequest;
var sRequest = (isPost) ? oRequest : null;
/** hack by tiyi **/
//warpper
var tH = {
success:function (id,o,args){
_xhrCallback.success(o);
},
failure:function (id,o,args){
_xhrCallback.failure(o);
},
}
var tiyi_cfg = {
on:{
success:tH.success,
failure:tH.failure
},
context:this,
method: sMethod,
data: sRequest
};
// Send the request right away
if(this.connXhrMode != “queueRequests”) {
//oQueue.conn = oConnMgr.asyncRequest(sMethod, sUri, _xhrCallback, sRequest);
oQueue.conn = Y.io(sUri, tiyi_cfg);
}
// Queue up then send the request
else {
// Found a request already in progress
if(oQueue.conn) {
var allRequests = oQueue.requests;
// Add request to queue
allRequests.push({request:oRequest, callback:tiyi_cfg});
// Interval needs to be started
if(!oQueue.interval) {
oQueue.interval = setInterval(function() {
// Connection is in progress
/*if(oConnMgr.isCallInProgress(oQueue.conn)) {
return;
}*/
if(oQueue.conn.isInProgress()){
return ;
}
else {
// Send next request
if(allRequests.length > 0) {
// Validate request
sUri = (isPost || !lang.isValue(allRequests[0].request)) ? sLiveData : sLiveData+allRequests[0].request;
sRequest = (isPost) ? allRequests[0].request : null;
//oQueue.conn = oConnMgr.asyncRequest(sMethod, sUri, allRequests[0].callback, sRequest);
oQueue.conn = Y.io(sUri, allRequests[0].callback);
// Remove request from queue
allRequests.shift();
}
// No more requests
else {
clearInterval(oQueue.interval);
oQueue.interval = null;
}
}
}, 50);
}
}
// Nothing is in progress
else {
oQueue.conn = Y.io(sUri, tiyi_cfg);
//oQueue.conn = oConnMgr.asyncRequest(sMethod, sUri, _xhrCallback, sRequest);
}
}
}
else {
YAHOO.log(“Could not find Connection Manager asyncRequest() function”, “error”, this.toString());
// Send null response back to the caller with the error flag on
DS.issueCallback(oCallback,[oRequest,{error:true}],true,oCaller);
}
return tId;
}
大体就是把connection 用了Y.io 来处理。同时把 callback 做了一个转换工作。这么修改完毕后,配合上Datatable的修改。答案来了:
datasource 里面还有一些对connection进行abort的操作,也要对应做转换才算完美,继续投入代码修改……
实际上就在上文代码里面包含了abort。但是我还是把修改后的代码放在下方,体现历史变化:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160484.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...