我有這個遞歸函數,它給了我一些問題。它需要像20.000次那樣運行,但是當它多次循環瀏覽器崩潰時。任何幫助表示讚賞遞歸函數在多次循環時崩潰javascript
var valid = 0, id = 0;
$(document).ready(function() {
$("#fetch").submit(function(event) {
event.preventDefault();
var selected = $(this).find("#site option:selected");
var pieces = selected.text().split("(");
var sitename = pieces[0];
var numbers = pieces[1].slice(0,-1).split("/");
var fetched = numbers[0]; var total = numbers[1];
var members = $(this).find("#members").val();
var time = $(this).find("#wait").val() * 1000;
wait = (time == 0) ? 800 : time;
$("progress").prop("value", 0).prop("max", members * 2).fadeIn();
valid = 0;
function fetchMember(id) {
id++;
$.post("script.php", $("#fetch").serialize() + "&id=" + id)
.done(function(data) {
console.clear();
isUser = ($(data).text().indexOf("Invalid User") == -1);
if (isUser) valid++;
if(valid < members) setTimeout(function(){ fetchMember(id) }, wait);
if (isUser) {
progress();
fetched++;
selected.text(sitename+"("+fetched+"/"+total+")"); //Updating numbers of fetched profiles on the frontend
username = $(data).find(".normal").text() || $(data).find(".member_username").text() || $(data).find("#username_box h1").text();
$(data).find("dt").each(function() {
var text = $(this).text();
if (text == 'Location') country = $(this).next("dd").text();
});
$.post("save.php", { username: username })
.done(function(data) {
$("#test").append(id+" "+data + "<br />");
progress();
});
}
});
}
fetchMember(id);
});
});
的功能需要的800毫秒默認的時間間隔,甚至更像是10分鐘內重複20.000倍
等待的價值是什麼?我不會同時超過8個連接到同一個主機。由於您發佈的數據最好只有兩個連接。 – Wayne 2014-08-31 10:57:30
等待時間以毫秒爲單位,由用戶設置。 8個連接?只有2個連接,它們必須分開 – 2014-08-31 11:00:47
是否消耗大量內存? – Wayne 2014-08-31 11:08:24