diff --git a/build/brook-core.js b/build/brook-core.js index 2334ff2..0053b68 100644 --- a/build/brook-core.js +++ b/build/brook-core.js @@ -261,7 +261,8 @@ Namespace('brook.util') next(value); }); }; - var emitInterval = function(msec){ + var EMIT_INTERVAL_MAP = {}; + var emitInterval = function(msec, name){ var msecFunc = ( typeof msec == 'function' ) ? msec : function(){return msec}; @@ -269,6 +270,15 @@ Namespace('brook.util') var id = setInterval(function(){ next(val); },msecFunc()); + if (name) { + EMIT_INTERVAL_MAP[name] = id; + } + }); + }; + var stopEmitInterval = function(name) { + return ns.promise(function(next, value) { + clearInterval(EMIT_INTERVAL_MAP[name]); + next(value); }); }; /**#@-*/ @@ -285,7 +295,8 @@ Namespace('brook.util') unlock : unlock, from : from, waitUntil : waitUntil, - emitInterval: emitInterval + emitInterval: emitInterval, + stopEmitInterval: stopEmitInterval }); }); diff --git a/build/brook-mobile.js b/build/brook-mobile.js index 309b2bc..ad0e0ce 100644 --- a/build/brook-mobile.js +++ b/build/brook-mobile.js @@ -261,7 +261,8 @@ Namespace('brook.util') next(value); }); }; - var emitInterval = function(msec){ + var EMIT_INTERVAL_MAP = {}; + var emitInterval = function(msec, name){ var msecFunc = ( typeof msec == 'function' ) ? msec : function(){return msec}; @@ -269,6 +270,15 @@ Namespace('brook.util') var id = setInterval(function(){ next(val); },msecFunc()); + if (name) { + EMIT_INTERVAL_MAP[name] = id; + } + }); + }; + var stopEmitInterval = function(name) { + return ns.promise(function(next, value) { + clearInterval(EMIT_INTERVAL_MAP[name]); + next(value); }); }; /**#@-*/ @@ -285,7 +295,8 @@ Namespace('brook.util') unlock : unlock, from : from, waitUntil : waitUntil, - emitInterval: emitInterval + emitInterval: emitInterval, + stopEmitInterval: stopEmitInterval }); }); diff --git a/build/brook.js b/build/brook.js index 6f37d20..7f8dc27 100644 --- a/build/brook.js +++ b/build/brook.js @@ -261,7 +261,8 @@ Namespace('brook.util') next(value); }); }; - var emitInterval = function(msec){ + var EMIT_INTERVAL_MAP = {}; + var emitInterval = function(msec, name){ var msecFunc = ( typeof msec == 'function' ) ? msec : function(){return msec}; @@ -269,6 +270,15 @@ Namespace('brook.util') var id = setInterval(function(){ next(val); },msecFunc()); + if (name) { + EMIT_INTERVAL_MAP[name] = id; + } + }); + }; + var stopEmitInterval = function(name) { + return ns.promise(function(next, value) { + clearInterval(EMIT_INTERVAL_MAP[name]); + next(value); }); }; /**#@-*/ @@ -285,7 +295,8 @@ Namespace('brook.util') unlock : unlock, from : from, waitUntil : waitUntil, - emitInterval: emitInterval + emitInterval: emitInterval, + stopEmitInterval: stopEmitInterval }); }); diff --git a/build/brook.min.js b/build/brook.min.js index 81a745f..239fbd3 100644 --- a/build/brook.min.js +++ b/build/brook.min.js @@ -7,7 +7,7 @@ catch(e){this.onError(e);}};proto.forEach=proto.subscribe;proto.setErrorHandler= setTimeout(function(){p(next,val)},100);};return ns.promise(p);};var debug=function(sig){var sig=sig?sig:"debug";return ns.promise(function(next,val){console.log(sig+":",val);return next(val);});};var cond=function(f,promise){return ns.promise(function(next,val){if(!f(val)) return next(val);promise.subscribe(function(val){return next(val);},val);});};var match=function(dispatchTable){return ns.promise(function(next,val){var promise=dispatchTable[val]||dispatchTable['__default__']||ns.promise();promise.subscribe(function(v){next(v);},val);});};var LOCK_MAP={};var unlock=function(name){return ns.promise(function(next,val){LOCK_MAP[name]=false;next(val);});};var lock=function(name){var tryLock=(function(next,val){if(!LOCK_MAP[name]){LOCK_MAP[name]=true;return next(val);} setTimeout(function(){tryLock(next,val);},100);});return ns.promise(tryLock);};var from=function(value){if(value.observe){return ns.promise(function(next,val){value.observe(ns.promise(function(n,v){next(v);}));});} -return ns.promise(function(next,val){next(value);});};var emitInterval=function(msec){var msecFunc=(typeof msec=='function')?msec:function(){return msec};return ns.promise(function(next,val){var id=setInterval(function(){next(val);},msecFunc());});};ns.provide({mapper:mapper,filter:filter,scatter:scatter,takeBy:takeBy,wait:wait,cond:cond,match:match,debug:debug,lock:lock,unlock:unlock,from:from,waitUntil:waitUntil,emitInterval:emitInterval});});Namespace('brook.lambda') +return ns.promise(function(next,val){next(value);});};var EMIT_INTERVAL_MAP={};var emitInterval=function(msec,name){var msecFunc=(typeof msec=='function')?msec:function(){return msec};return ns.promise(function(next,val){var id=setInterval(function(){next(val);},msecFunc());if(name){EMIT_INTERVAL_MAP[name]=id;}});};var stopEmitInterval=function(name){return ns.promise(function(next,value){clearInterval(EMIT_INTERVAL_MAP[name]);next(value);});};ns.provide({mapper:mapper,filter:filter,scatter:scatter,takeBy:takeBy,wait:wait,cond:cond,match:match,debug:debug,lock:lock,unlock:unlock,from:from,waitUntil:waitUntil,emitInterval:emitInterval,stopEmitInterval:stopEmitInterval});});Namespace('brook.lambda') .define(function(ns){var cache={};var hasArg=function(expression){return expression.indexOf('->')>=0;};var parseExpression=function(expression){var fixed=hasArg(expression)?expression:"$->"+expression;var splitted=fixed.split("->");var argsExp=splitted.shift();var bodyExp=splitted.join('->');return{argumentNames:argsExp.split(','),body:hasArg(bodyExp)?lambda(bodyExp).toString():bodyExp};};var lambda=function(expression){if(cache[expression]) return cache[expression];var parsed=parseExpression(expression);var func=new Function(parsed.argumentNames,"return ("+parsed.body+");");cache[expression]=func;return func;};ns.provide({lambda:lambda});});Namespace('brook.channel') .use('brook promise')