1

我正在遍历数组中的 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 的数量,我会在该函数的末尾做我需要的。这里可能存在竞争条件和并发问题,对吧?这应该怎么做?

4

2 回答 2

2

不。Javascript 是单线程的,这意味着如果您增加一个计数器,然后将其与某个数字进行比较以确定是否继续,您基本上只是实现了一个信号量。这样做不会有并发问题。

于 2012-10-17T17:24:22.573 回答
0
(XMLHttpRequest).addEventListener('load', handleload, false);

function handleload(e) {
    //dostuff
}

XMLHttpRequest 的加载事件在完成加载时触发;这就是你所追求的吗?

于 2012-10-17T17:27:28.200 回答