如果是最新的,是否会出现调用堆栈溢出的问题?
因为它无限递归地称为自我
如果出现这样的问题,有没有更好的实施?
function waitForMsg(){
$.ajax({
type: "GET",
url: "xxx.php",
async: true,
cache: false,
timeout: 600000,
success: function(data){
handleFunction(data);
waitForMsg();
},
error: function(XMLHttpRequest, textStatus, errorThrown){
XMLHttpRequest.abort();
waitForMsg();
}
});
}
答案 0 :(得分:1)
我认为这是一种递归,但不是严格意义上的当前上下文,因为你将匿名函数添加到传递给ajax函数的对象上,并且ajax调用立即返回(它不会任何评估功能的东西)。当ajax最终成功或失败时,需要调用的任何函数都在一个全新的上下文中,具有不同的堆栈值和堆栈位置。
BTW,我不确定我是否理解XMLHttpRequest.abort();
调用。到那时,XMLHttpRequest已经失败了,所以不应该中止(我想!)。