[英]How to call a method of a class A inside class A?
我需要再次在我的 AJAX 中調用 getData() 方法,如果 401 發生並且計數器低於或等於 1。問題是,在 401 狀態下沒有調用該方法......我如何在相同的情況下調用該方法班級?
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”創建一個新的作用域,您可以使用箭頭函數來繞過它。
類似下面的東西......未經測試。
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.
}
}
}
});
}
}
this.getData(callback, url)
- 調用類內的方法。
但是你需要在getData()
方法中用箭頭函數() => {}
替換所有的函數聲明function () {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.