虽然有越来越多的网站在应用AJAX技术进行开发,但是构建一个复杂的AJAX应用仍然是一个难题。
造成这些困难的主要原因是什么呢?是与服务器的异步通信问题?还是GUI程序设计问题呢?通常这两项工作都是由桌面程序来完成的,那究竟为何开发一个可以实现同样功能的AJAX应用就这么困难呢?
大家都知道javascript是单线程执行的,但是又可以通过setTimeout或者setInterval定时执行一个方法,通过Ajax可以在向服务器端发送请求没有收到回应可以继续执行主逻辑。这些是如何做到的呢,下面就来探讨下。
先看如下一段代码:
function printHello()
{
console.time("hello");
}
function printHello1()
{
console.timeEnd("hello");
}
setTimeout(printHello,1000);
setTimeout(printHello1,5000);
function wait(time)
{
var now = Date.now();
while(Date.now() - now < time)
{
}
}
wait(5000);
以上代码得执行结果为
hello: 0.124ms
从代码可以看出,printHello 与printHello1几乎是同时执行的。如果对于多线程模型,应该执行间隔是4000ms。