source: [view]
var arr = rowArrays[index], _this = this;
var urstart = userRequest.start = arr[0];
userRequest.count = arr[arr.length - 1] - arr[0] + 1;
userRequest.onComplete = function(items){
dojo.forEach(items, function(item, i){
var r = urstart + i;
if(r in map){
result[map[r]] = item;
}
});
if(++index == rowArrays.length){
//mapped rows are all fetched.
if(count > 0){
userRequest.start = start;
userRequest.count = count;
userRequest.onComplete = oldOnComplete;
hitchIfCan(userRequest.scope, oldOnComplete)(result, userRequest);
}else{
userRequest.start = userRequest.start + items.length;
delete userRequest.count;
userRequest.onComplete = function(items){
result = result.concat(items);
userRequest.start = start;
userRequest.onComplete = oldOnComplete;
hitchIfCan(userRequest.scope, oldOnComplete)(result, userRequest);
};
_this.originFetch(userRequest);
}
}else{
_this._subFetch(userRequest, rowArrays, index, result, map, oldOnComplete, start, count);
}
};
_this.originFetch(userRequest);