我想在JavaScript + Ajax做一個小網站,我想遞歸做它。我從來沒有使用Ajax,問題是我不知道完成功能。該代碼看起來像這樣:在javascript和ajax遞歸函數
var cont = 0;
var function1 = function (query) {
$.ajax({
url: '...',
data: {
.
.
.
},
success: function (response) {
instructions;
function2(param1, param2);
}
});
};
var function2 = function (query, param2) {
$.ajax({
url: '...',
data: {
.
.
.
},
success: function (response) {
instructions;
function3(param1, param2, param3);
}
});
};
var function3 = function (query, param2, param3) {
if (cont == 2) {
console.log("finish");
return;
}
var test = $.ajax({
url: '...',
data: {
.
.
.
},
success: function (response) {
if (...) {
cont++;
instructions;
var audio = new Audio(...);
audio.play();
audio.onended = function() {
instructions;
function3(query, param2, param3);
return;
};
} else {
instructions;
function3(query, param2, param3);
};
return;
}
});
return;
};
document.getElementById('search-form').addEventListener('submit', function (e) {
e.preventDefault();
function1(document.getElementById('query').value);
}, false);
所以基本上,當cont == 2
我試圖擺脫的JavaScript function3
與return;
但是程序的某些部分(我不知道,如果success: function (response)
或完整的JavaScript function3
)是仍在運行並正在執行指令。
我該如何解決這個問題?
如果您if條件未通過作爲真正的三倍,'cont'永遠不會'2'。 –
'paramX'值來自哪裏?你可以把它們全部放在一個數組中,並遞歸地將它們傳遞給一個函數。 –
它總是達到2,那不是問題 –