我正在迭代一个数组中的URL列表,并且我正在下载整个页面的每个URL。
var urlInformations = [];
var count = 0;
urls.forEach(function(url) {
// download and add to urlInformations
count++
if (count == urls.length) {
// do something after all URLs are processed
}
});
现在,我正在处理这个问题的方法是保持一个元素的数量,在匿名函数中递增它,如果计数达到我拥有的URL的数量,那么我会做我需要的。这里可能存在竞争条件和并发问题,对吧?该怎么做?
答案 0 :(得分:2)
没有。 Javascript是单线程的,这意味着如果你增加一个计数器,然后将它与某个数字进行比较以确定是否继续,你基本上只是实现了一个信号量。这样做不会出现并发问题。
答案 1 :(得分:0)
(XMLHttpRequest).addEventListener('load', handleload, false);
function handleload(e) {
//dostuff
}
XMLHttpRequest的加载事件在加载完成后触发;你正在追求的是什么?