亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超16個贊

您可以將回調的參數分離出來,以便像這樣分隔參數

   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 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號