javascript:在一段时间后中断递归调用

标签 javascript ajax extjs recursion

我正在尝试执行递归 AJAX 调用来处理我的应用程序中的功能之一。场景如下:

  1. 执行 AJAX 函数
  2. 服务器可以返回两个不同的值,例如:String A 或 String B
  3. 如果响应是字符串 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/

相关文章:

Javascript - 如何将事件监听器内的元素值与数组元素进行比较?

javascript - 匹配 float 但不匹配由点分隔的日期

javascript - 尽管设置了 'No Store',iPad 仍缓存 AJAX 响应

Python 多线程

javascript - 如何从 uploadfilefield 获取文件内容?

javascript - 单击推送通知后加载应用程序时运行的应用程序事件是什么

javascript - 我如何强制所有 <video> 内容内联播放

php - 通过 AJAX 发布的 boolean 变量在服务器端被视为字符串

javascript - 如何在 Javascript 生成的 HTML 表单中包含 Django 1.2 的 CSRF token ?

javascript - ExtJS 4.1 从外部网页加载内容