Javascript:在一段时间后中断递归调用
javascript: break a recursive call after a time duration
我试图执行一个递归AJAX调用来处理我的应用程序中的一个功能。场景如下:
- 执行AJAX函数
- 服务器可以返回两个不同的值,例如:字符串A或字符串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
}
}
}
}
var startTime = (new Date).getTime();
function process() {
Ext.Ajax.request({
url: "ABC.action",
form: 'formname',
params: {
method: "Serversidehandler",
},
success: processSuccess,
failure: processFail
});
}
function processSuccess(request) {
var elapsedTime = 0;
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") {
elapsedTime = (new Date().getTime()) - startTime;
if (elapsedTime <= 2000) {
process() // main method called again
};
}
}
}
}
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 递归深度比较
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- 递归函数中断
- 如何递归地获取嵌套对象中所有子对象的列表
- JavaScript 素数搜索无限递归
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 递归|两个函数名
- 有没有一种方法可以在Javascript中进行可变递归currying
- 如何对不同的表递归使用以下代码
- 将jQuery对象传递到setTimeout递归函数中
- 如何从递归函数中断和返回
- Javascript对象比较递归中断
- Javascript:在一段时间后中断递归调用
- Javascript递归意外中断-长代码警告
- 无法使用$.Defered()对象和$.then()中断递归
- JavaScript 递归函数在调用中包含 () 时中断