异步JS框架的功能与实现
1。异步JS的重要性
随着网络平台的地位的提高,浏览器的Javascript语言已经成为世界上最流行的语言,甚至通过Javascript的最重要的特征node.js.one进入服务器编程领域,它是挡不住的,它不意味着它不应该是而不是一个不可能的意义(只要它提供了API)。
Javascript是一个单线程的语言,因此一旦API阻止当前线程,它相当于挡住了整个程序,所以异步Javascript编程中起着重要的作用。异步编程的好处,程序执行不在这里讨论,但异步编程非常繁琐的开发者。它破坏了程序的逻辑,语义完全丧失了。
你有没有因为Ajax异步而疯狂,只能在回调函数中嵌套代码看起来非常糟糕。如果同步使用,代码不可嵌套的。但如果要求时间太长,因为线程被阻塞,导致浏览器假死。这很让人讨厌。看来,优雅的代码和良好的用户体验不可兼。
2。异步js框架
如果现在有3个Ajax请求,它们是A,B和C,a被执行直到B被执行,C被执行直到B被执行。这样我们就必须嵌套,在A的回调函数中执行B,并且在B的回调函数中执行C。
按照专业轮的原则,我的异步JS框架开始了!
一般结构—
VaR JS =新asyncjs();
构建(函数()){
创建一个_ $异步({
URL
成功:函数(){
}
});
var b = _ $异步({
URL
成功:函数(){
}
});
var c = _ $异步({
URL
成功:函数(){
}
});
});
eval(功能);
a,b,c将按顺序执行,线程不会被阻塞。
优势
1。很好的经验,整个过程是异步的,线程不会阻塞。
2。代码是优雅的,不需要复杂的嵌套,框架可以帮助您自动化嵌套。您只需注意代码本身,并且易于维护。
三.简单易用。建立(函数(){ })你可以读到C #线程,我开了一个线程来执行(功能(JS){ }是单线程的,它应该是强调!) U3000
新(线程)
{
/ /做
});
4。简单和易于扩展。(请把所有你想执行_ $异步方法。)
5。易于调试。
缺点
1.build(function(){ }),函数不支持自定义的局部变量,如var a = 1;
如果要使用局部变量,只能使用:
创建一个_ $异步(函数()){
返回1;
});
2美元。_异步();必须以';'。
3.build(function(){ })不能直接在函数中调用外部函数,如
函数测试(){
VaR方法=函数(){()
警报(1);
};
构建(函数()){
TestMethod();
});
}
请使用它
函数测试(){
VaR方法=函数(){()
警报(1);
};
构建(函数()){
_ $异步(功能(){()
TestMethod();
});
});
}
也许你会好奇这是怎么做的。为什么不将eval(R)
实施原则是分析在建立并结合动态,嵌套的函数,并执行它。为什么eval不封装的是如果它是封装的,您将无法使用外部变量,因此必须把。
三.测试代码和效果
函数显示(){
VaR JS =新asyncjs();
var url =原始页面WebForm1 aspx;
构建(函数()){
_ $异步(功能(){()
警报(单击之后的第一个Ajax请求);
});
_ $异步({
网址,
数据:{第一次Ajax请求},
成功:函数(数据){
警报()第一个请求的结束,结果:+数据;
}
});
_ $异步(功能(){()
警报(单击后启动第二个Ajax请求;
});
VaR结果= _ $异步({
网址,
数据:{第二个Ajax请求},
成功:函数(数据){
返回数据;
}
});
_ $异步(功能(){()
警报()第二个请求的结束,结果:+结果;
});
});
eval(功能);
}
背景#代码C
protected void page_load(object sender,EventArgs e)
{
字符串变量的值的要求。QueryString {val};
如果(!String.IsNullOrEmpty(Val))
{
线程(睡眠)(2000);
响应(写返回结果);
响应(完);
}
}
设计素描 uff1a
您可以看到它是按顺序执行的,并且线程不会被阻塞。
以上是异步JS框架的作用和实现方法的介绍,希望能帮助大家的学习,真正了解异步js的重要性。