JavaScript 响应式编程模式有点类似 WebForm 中的事件驱动模式(传相应的处理函数给委托,通过事件来触发来进行相关的处理),在 AngularJs 2.x 框架中,应用了 RxJS API,具体可以参考 AngularJs 官网。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script type="text/javascript"> //定义功能类似C#中的委托的函数 function showId(func, param) { if (func) { func(param); } } //显示标签的id(响应式编程方式,类似WebForm中的事件机制) function myClick(t) { showId(function (x) { alert(x); }, t); } </script> </head> <body> <div onclick="myClick(this.id)" id="myDiv">Click to show id</div> </body> </html>
js中把字符串转成函数
<html> <head> <!--js中把字符串转成函数--> <meta charset="utf-8" /> </head> <body> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> $(document).ready(function(){ //函数体字符串 var jsStr = 'function checkLength(){ var v = $(this).val(); if(v.length > 3){ alert(v+": 长度大于 3"); } }'; jsStr += ' function checkType(){ var re = /[+]/; var v = $(this).val(); if(re.test(v)){ alert(v+": 包含: +"); } }'; //创建一个<script>标签 var scriptTag = document.createElement("script"); scriptTag.innerHTML = jsStr; //把新建的<script>标签添加到<head>标签中 document.getElementsByTagName("head")[0].appendChild(scriptTag); //为input标签绑定事件 $("#name").bind("blur", checkLength); $("#name").bind("blur", checkType); }); </script> <input id="name" type="text" /> </body> </html>
RxJS参考资源:
https://github.com/Reactive-Extensions/RxJS
http://bbs.csdn.net/topics/380250714
并发编程参考书籍:
《C#并发编程经典实例》 Stephen Cleary 著 相银初 译