如何在classA里面调用一个classA的方法?

How to call a method of a class A inside class A?

如果出现 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.getData(callback, url) - 调用class里面的方法。

但是你需要用 getData() 方法中的箭头函数 () => {} 替换所有函数声明 function () {}

您对正则函数表达式的使用正在为 '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.
                    }
                }
            }
        });
    }
}