Mercurial > urweb
comparison lib/js/urweb.js @ 1021:7a4a55e05081
Use call/cc for recv and sleep
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sun, 25 Oct 2009 15:29:21 -0400 |
parents | dfe34fad749d |
children | f87d0fedc54c |
comparison
equal
deleted
inserted
replaced
1020:dfe34fad749d | 1021:7a4a55e05081 |
---|---|
777 } else | 777 } else |
778 ch = channels[chn]; | 778 ch = channels[chn]; |
779 | 779 |
780 var msg = dequeue(ch.msgs); | 780 var msg = dequeue(ch.msgs); |
781 if (msg == null) { | 781 if (msg == null) { |
782 enqueue(ch.listeners, function(msg) { execF(execF(k, parse(msg)), null); }); | 782 enqueue(ch.listeners, function(msg) { k(parse(msg)); }); |
783 } else { | 783 } else { |
784 try { | 784 try { |
785 execF(execF(k, parse(msg)), null); | 785 k(parse(msg)); |
786 } catch (v) { | 786 } catch (v) { |
787 doExn(v); | 787 doExn(v); |
788 } | 788 } |
789 } | 789 } |
790 } | 790 } |
791 | 791 |
792 function sl(ms, k) { | 792 function sl(ms, k) { |
793 window.setTimeout(function() { execF(k, null); }, ms); | 793 window.setTimeout(function() { k(null); }, ms); |
794 } | |
795 | |
796 function sp(e) { | |
797 execF(e, null); | |
794 } | 798 } |
795 | 799 |
796 | 800 |
797 // Key events | 801 // Key events |
798 | 802 |