Javascript 防止递归函数锁定浏览器
我有一个递归函数,在运行时锁定浏览器 当此函数运行时,所有jquery命令都被锁定,等待函数结束 我应该怎么做才能使这个函数异步 此函数在document.ready上运行Javascript 防止递归函数锁定浏览器,javascript,jquery,recursion,Javascript,Jquery,Recursion,我有一个递归函数,在运行时锁定浏览器 当此函数运行时,所有jquery命令都被锁定,等待函数结束 我应该怎么做才能使这个函数异步 此函数在document.ready上运行 function SearchTrip() { $.post("/extensions/searchtrip", { from: $("#from").val(), to: $("#to").val(), ddate: $("#ddate").val() },
function SearchTrip() {
$.post("/extensions/searchtrip", {
from: $("#from").val(),
to: $("#to").val(),
ddate: $("#ddate").val()
},
function (mReturn) {
if (mReturn.fTotalAmount != '0,00') {
var sAirline = '';
if (mReturn.Airline)
sAirline = ' pela ' + mReturn.Airline;
$("#buscandoPassagens").hide();
} else if (SearchTripAmount < 5) {
SearchTripAmount++;
setTimeout(function () {
SearchTrip();
}, 500);
} else {
$("#pNaoEncontrada").show();
}
},
"json");
}
函数SearchTrip(){
$.post(“/extensions/searchtrip”{
from:$(“#from”).val(),
至:$(“#至”).val(),
ddate:$(“#ddate”).val()
},
功能(mReturn){
如果(mReturn.fTotalAmount!=“0,00”){
var sAirline=“”;
如果(mReturn.Airline)
赛尔林=‘贝拉’+mReturn.航空公司;
$(“#buscandoPassagens”).hide();
}否则如果(金额<5){
SearchTripAmount++;
setTimeout(函数(){
SearchTrip();
}, 500);
}否则{
$(“#pNaoEncontrada”).show();
}
},
“json”);
}
如果要异步运行,只需使用setTimeout将所有内容包装起来即可:
function SearchTrip(){
setTimeout( function() {
//this is your $.post i just deleted 'content' to make answer easier to read
$.post();
}, 0);
}
为什么要递归启动它?对每个递归调用使用setTimeout。SearchTripAmount
是全局变量吗?你确定它是递增的吗?是的,SearchTripAmount是全局的,我有一个运行此函数的限制,但没有返回5倍的结果。Hi Kasyx,我需要递归运行它,因为如果结果为=0,函数需要调用自身。好的,但是在我运行函数5次没有结果之后,如何结束循环?我不想让这个函数永远运行。