为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼啦一阵风 2022-08-27 10:57:01
我有一堆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个参数传递给它,它仍然告诉我的错误记录器传递给它什么。
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

您可以将回调的参数分离出来,以便像这样分隔参数

   error: function (e) {
           showError(e, callServer, [a,b,c]);
    }

然后在您的显示错误中,您可以访问参数

即使您不知道有多少个参数,也可以使用点差运算符传入参数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

function showError(e, f, params) {    consolelog(params);
    reTryFunction = function () { f(...params); }
    $("#hdnJSError").val((JSON.stringify(e)).replace(/</g, "&lt;").replace(/>/g, "&gt;"));
    $("#ErrorModal").modal("show");
}


查看完整回答
反对 回复 2022-08-27
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信