关于使用Javascript来模拟多线程的一点想法

来源:互联网 发布:instagram拍照软件好吗 编辑:程序博客网 时间:2024/06/18 07:25

据我所知,JavaScript引擎是单线程运行的,浏览器无论在什么时候都有且只有一个线程在运行JavaScript程序。

参考:http://www.phpv.net/html/1700.html 

不过我曾今写过一个javascript的类库,要求在同一时刻向10个服务器发送请求,在返回的响应中获取最大值。我们知道,每个服务器响应的时间往往各不相同,我们假设一般都能够在150ms内返回结果。现在有这样的一个问题,我们希望所有任务在200ms里完成。如果依次进行访问并或者结果显示是来不及的,那如果能够让JS模拟出多线程的效果呢?

当然,我们可能首先会想到使用xmlhttprequest(ajax)来实现异步操作,通过设置一个timeout时间200ms, 把所有成功返回的结果拿出来比较(有些未能在200ms里返回的响应被丢弃)。然而在实际的运用过程中我们放弃了这种方法,原因是通过ajax发送请求会出现跨域无法访问的问题,及时都在一个域名下,10个请求在200ms内成功返回的机会好像也不是那么高(当然这个可能都很多其他的环境因素有关)。

我们最终的解决办法是,通过在页面上,给每一个请求动态创建一个iframe,然后在iframe内部发送请求,最后把结果返回到页面。由此可见,iframe有时也能起到很大的作用。不过我相信要是同时需要发送100个请求可能也不靠谱,因为据我所知,动态创建过多的iframe会严重影响性能。不知道除此之外还有没有别的什么更好的办法了。


0 0
原创粉丝点击