UNPKG

hellojs-xiaotian

Version:

A clientside Javascript library for standardizing requests to OAuth2 web services (and OAuth1 - with a shim)

65 lines (52 loc) 2.17 kB
ko.computedContext = ko.dependencyDetection = (function () { var outerFrames = [], currentFrame, lastId = 0; // Return a unique ID that can be assigned to an observable for dependency tracking. // Theoretically, you could eventually overflow the number storage size, resulting // in duplicate IDs. But in JavaScript, the largest exact integral value is 2^53 // or 9,007,199,254,740,992. If you created 1,000,000 IDs per second, it would // take over 285 years to reach that number. // Reference http://blog.vjeux.com/2010/javascript/javascript-max_int-number-limits.html function getId() { return ++lastId; } function begin(options) { outerFrames.push(currentFrame); currentFrame = options; } function end() { currentFrame = outerFrames.pop(); } return { begin: begin, end: end, registerDependency: function (subscribable) { if (currentFrame) { if (!ko.isSubscribable(subscribable)) throw new Error("Only subscribable things can act as dependencies"); currentFrame.callback.call(currentFrame.callbackTarget, subscribable, subscribable._id || (subscribable._id = getId())); } }, ignore: function (callback, callbackTarget, callbackArgs) { try { begin(); return callback.apply(callbackTarget, callbackArgs || []); } finally { end(); } }, getDependenciesCount: function () { if (currentFrame) return currentFrame.computed.getDependenciesCount(); }, isInitial: function() { if (currentFrame) return currentFrame.isInitial; } }; })(); ko.exportSymbol('computedContext', ko.computedContext); ko.exportSymbol('computedContext.getDependenciesCount', ko.computedContext.getDependenciesCount); ko.exportSymbol('computedContext.isInitial', ko.computedContext.isInitial); ko.exportSymbol('ignoreDependencies', ko.ignoreDependencies = ko.dependencyDetection.ignore);