gpt4 book ai didi

javascript - 如何在类A中调用类A的方法?

转载 作者:行者123 更新时间:2023-11-30 19:23:59 25 4
gpt4 key购买 nike

如果出现 401 并且计数器小于或等于 1,我需要再次在我的 AJAX 中调用方法 getData()。问题是,在该 401 状态下未调用该方法...我如何调用该方法在同一个类(class)?

export default class Search {
constructor(){
this.result = {};
}

getData(callback, url){
var counter = 0;
alert("GET DATA CALLED " + counter);
$.ajax({
'url': proxy + url,
'type': 'GET',
'content-Type': 'x-www-form-urlencoded',
'dataType': 'json',
'headers': {
'Authorization': 'bearer ' + localStorage.access_token
},
'success': function (result) {
documentView.fillDocuments(result);
callback(result);
},
'error': function (XMLHttpRequest, textStatus, errorThrown) {
// alert('Error: ' + errorThrown);
console.log(XMLHttpRequest.status + ' ' +
XMLHttpRequest.statusText);
return "";
}, statusCode: {
401: function (response) {
counter++;
alert("401");
if(counter <= 1){
refreshToken(); // CALLED
getData(callback, url); // NOT CALLED
}
}
}
});
}

最佳答案

您对正则函数表达式的使用正在为“this”创建一个新范围,您可以使用 arrow functions 绕过它.

类似下面的东西......未经测试。

export default class Search {
constructor() {
this.result = {};
}

getData = (callback, url) => {
var counter = 0;
alert("GET DATA CALLED " + counter);
$.ajax({
url: proxy + url,
type: "GET",
"content-Type": "x-www-form-urlencoded",
dataType: "json",
headers: {
Authorization: "bearer " + localStorage.access_token
},
success: (result) => {
documentView.fillDocuments(result);
callback(result);
},
error: (XMLHttpRequest, textStatus, errorThrown) => {
// alert('Error: ' + errorThrown);
console.log(
XMLHttpRequest.status + " " + XMLHttpRequest.statusText
);
return "";
},
statusCode: {
401: (response) => {
counter++;
alert("401");
if (counter <= 1) {
refreshToken(); // CALLED
this.getData(callback, url); // NOT CALLED - Should be called now.
}
}
}
});
}
}

关于javascript - 如何在类A中调用类A的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com