我正在尝试执行递归 AJAX 调用来处理我的应用程序中的功能之一。场景如下:
- 执行 AJAX 函数
- 服务器可以返回两个不同的值,例如:String A 或 String B
- 如果响应是字符串 B,则再次调用相同的 AJAX 函数。
我想确保,如果服务器返回字符串 B 作为响应超过两分钟,则递归执行应停止并向用户显示错误消息。
有人可以建议一种适当的方法吗?
这是示例 JS 代码。我们正在使用 ExtJS:
function process()
{
Ext.Ajax.request({
url : "ABC.action",
form: 'formname',
params:{
method : "Serversidehandler",
},
success : processSuccess,
failure : processFail
});
}
function processSuccess(request)
{
if(request.responseText != null)
{
var responseJSON = Ext.decode(request.responseText);
var response = responseJSON.response;
if(response != null)
{
if(response == "A")
{
// do something
}
else if(response == "B")
{
process() // main method called again
}
}
}
}
最佳答案
尝试下面给出的代码,setTimeout 可以很好地处理延迟。
请更清楚地说明要求。
function process()
{
Ext.Ajax.request({
url : "ABC.action",
form: 'formname',
params:{
method : "Serversidehandler",
},
success : processSuccess,
failure : processFail
});
}
function processSuccess(request)
{
if(request.responseText != null)
{
var responseJSON = Ext.decode(request.responseText);
var response = responseJSON.response;
if(response != null)
{
if(response == "A")
{
// do something
}
else if(response == "B")
{
window.setTimeout(process(), 2000); // main method called again
}
}
}
}
关于javascript:在一段时间后中断递归调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25397554/