control-freak-ide/Code/client/build/dgrid/dstore/Promised.js.consoleStripped.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

37 lines
1016 B
JavaScript

define("dstore/Promised", [
'dojo/_base/declare',
'dojo/Deferred',
'./QueryResults',
'dojo/when'
], function (declare, Deferred, QueryResults, when) {
// module:
// this is a mixin that can be used to provide async methods,
// by implementing their sync counterparts
function promised(method, query) {
return function() {
var deferred = new Deferred();
try {
deferred.resolve(this[method].apply(this, arguments));
} catch (error) {
deferred.reject(error);
}
if (query) {
// need to create a QueryResults and ensure the totalLength is
// a promise.
var queryResults = new QueryResults(deferred.promise);
queryResults.totalLength = when(queryResults.totalLength);
return queryResults;
}
return deferred.promise;
};
}
return declare(null, {
get: promised('getSync'),
put: promised('putSync'),
add: promised('addSync'),
remove: promised('removeSync'),
fetch: promised('fetchSync', true),
fetchRange: promised('fetchRangeSync', true)
});
});