javascript错误记录器正在传递一个重试函数,我想记录的详细信息

我有一堆AJAX调用可能会引发错误。它们中的每一个都调用我设置的ShowError(e,f)函数。e参数是错误对象,f参数是一个函数,如果用户点击再次尝试,我向他们展示它们。我已经让它调用重试函数,但我也想记录它。我可以调用 f.toString() 来获取重试函数的代码,但是我正在寻找代码正在使用的值,但我无法找到它们。


原话:


function callServer(a,b,c) {

    $.ajax({

        type: "POST",

        url: '/ajax/code/that/might/produce/an/error/',

        data: JSON.stringify({ a: a, b: b, c: c }),

        contentType: "application/json; charset=utf-8",

        dataType: "json",

        accepts: "application/json",

        success: function (result) {

            alert("good");

        },

        error: function (e) {

            showError(e, function () { callServer(a, b, c); });

        }

    });

}

显示错误函数


var reTryFunction;

function showError(e, f) {

    reTryFunction = f;

    $("#hdnJSError").val((JSON.stringify(e)).replace(/</g, "&lt;").replace(/>/g, "&gt;"));

    $("#ErrorModal").modal("show");

}

用户点击“错误模式”对话框中的重试按钮时调用的重试函数


function retry()

{

    $.ajax({

        type: "POST",

        url: '/ErrorReport',

        data: JSON.stringify({ txtErrorReport: $("#txtErrorReport").val(), hdnJSError: $("#hdnJSError").val(), reTryFunction: reTryFunction.toString() }),

        contentType: "application/json; charset=utf-8",

        dataType: "json",

        accepts: "application/json",

        success: function (result)

        { },

        error: function (result)

        {

        }

    });


    $("#txtErrorReport").val("");


    $("#ErrorModal").modal("hide");

    reTryFunction();

}

这样做,我可以有一个通用的错误处理程序,它向我显示“function(){callServer(a,b,c)}”是错误的,但我想知道a,b和c的值是什么(以通用方式,所以如果最初调用函数有1或9999个参数传递给它,它仍然告诉我的错误记录器传递给它什么。


呼啦一阵风
浏览 83回答 1
1回答

侃侃尔雅

您可以将回调的参数分离出来,以便像这样分隔参数&nbsp;&nbsp;&nbsp;error:&nbsp;function&nbsp;(e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showError(e,&nbsp;callServer,&nbsp;[a,b,c]); &nbsp;&nbsp;&nbsp;&nbsp;}然后在您的显示错误中,您可以访问参数即使您不知道有多少个参数,也可以使用点差运算符传入参数&nbsp;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntaxfunction&nbsp;showError(e,&nbsp;f,&nbsp;params)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;consolelog(params); &nbsp;&nbsp;&nbsp;&nbsp;reTryFunction&nbsp;=&nbsp;function&nbsp;()&nbsp;{&nbsp;f(...params);&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;$("#hdnJSError").val((JSON.stringify(e)).replace(/</g,&nbsp;"&lt;").replace(/>/g,&nbsp;"&gt;")); &nbsp;&nbsp;&nbsp;&nbsp;$("#ErrorModal").modal("show"); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript