手机版

异步JS框架的功能与实现

时间:2021-09-28 来源:互联网 编辑:宝哥软件园 浏览:

先从异步js的重要性入手,然后介绍异步JS框架,从而一步步深入了解异步JS。

1.异步JS的重要性随着Web平台地位的提升,主导浏览器的JavaScript语言已经成为世界上最流行的语言之一,甚至通过Node.js进入了服务器编程领域.JavaScript的一个重要特性是“不能阻塞”,这里的“不能”是指“不应该”而不是“不能”(只要提供阻塞API)。

JavaScript是单线程语言,所以一个API一旦阻塞当前线程,就相当于阻塞了整个程序,所以“异步”在JavaScript编程中起着重要的作用。这里不讨论异步编程对程序执行的好处,但是异步编程对开发人员来说非常麻烦,会把程序逻辑打散,完全失去语义。

你有没有因为ajax是异步的,只能在回调函数中嵌套逻辑而抓狂过?这段代码看起来很糟糕。如果使用同步,代码不需要嵌套。但是,如果请求时间过长,浏览器将因线程阻塞而暂停。真的是很苦恼。看来优雅的代码和良好的用户体验不能兼得。

2.异步JS框架出道如果有3个ajax请求,分别是A、B、C、B、C,B只能在A执行后执行,C只能在B执行后执行。所以我们要嵌套,在A的回调函数中执行B,然后在B的回调函数中执行C。这段代码非常不友好。基于‘专业造轮子’的原则,我的异步JS框架启动了!一般结构-

var js=new Asyncjs();var func=js。build(function(){ var a=_ $ Async({ URL : ' ',success : function(){ });var b=_$Async({ url: " ",success : function(){ } });var c=_$Async({ url: " ",success : function(){ } });});eval(func);a、b、c将依次执行,线程不会被阻塞。

优点1。不错的体验。整个过程是异步的,线程不会阻塞。2.优雅的代码。不需要复杂的嵌套,框架帮你自动完成嵌套,只需要关注编码本身,容易维护。3.易于使用。Build(function(){})可以理解为C#的线程。我会多开一个线程来执行function(){} (JS是单线程的,要强调!)

new Thread(()={//do someting });4.简单易扩展。(请用_ $ async包装所有要执行的方法。) 5.易于调试。缺点1.build(function(){}),函数中不支持自定义局部变量,如var a=1;如果要使用局部变量,您只能:

var a=_ $ Async(function(){ return 1;});2._ $ Async();必须使用';结束。3.不能在build (function () {})函数中直接调用外部函数,例如。

function Test(){ var TestMethod=function(){ alert(1);};var func=js。build(function(){ TestMethod();});}请使用。

function Test(){ var TestMethod=function(){ alert(1);};var func=js。build(function(){ _ $ Async(function(){ TestMethod());});});}也许大家都会好奇,它是如何实现的?或者为什么不打包eval(r)?

实现原理是对Build中的函数进行分析,然后动态组合嵌套,再执行。eval不打包的原因是,如果打包,就不能使用外部变量,所以必须释放。

3.测试代码和效果。

head runat=' server ' meta http-equiv=' Content-Type ' Content=' text/html;charset=utf-8 '/title/title脚本src=' http : jquery-1。8 .2 .量滴js '/script script src=' http :异步JavaScript。js '/脚本脚本函数Show(){ var js=new异步js();var URL=' Webform 1 . aspx var func=js .build(function(){ _ $ Async(function(){ alert ')点击后开始第一次创建交互式、快速动态网页应用的网页开发技术请求');});_$Async({ url: url,数据: { val : }第一次创建交互式、快速动态网页应用的网页开发技术请求},成功:函数(数据){ alert('第一次请求结束,结果: '数据);} });_ $异步(函数(){ alert('点击后开始第二次创建交互式、快速动态网页应用的网页开发技术请求');});var result=_$Async({ url: url,data: { val: '第二次创建交互式、快速动态网页应用的网页开发技术请求},成功:函数(数据){返回数据;} });_ $异步(函数(){ alert('第二次请求结束,结果: '结果);});});eval(func);}/脚本/床头表单id='form1' runat='server' div输入类型=' button ' onclick=' Show()' value='查询/input type=' text '/div/form/body/html后台C#代码

受保护的无效页面_加载(对象发送者,事件参数e){ 0字符串值=请求查询字符串[' val '];if(!字符串IsNullOrEmpty(val)) { Thread .睡眠(2000年);回应。写(瓦尔)返回结果');回应end();} }效果图:

可以看到完全是按顺序执行,并且线程无阻塞。

以上就是介绍了异步射流研究…框架的作用以及实现方法,希望对大家的学习有所帮助,真正理解异步射流研究…的重要性。

版权声明:异步JS框架的功能与实现是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。