如何在A类内部调用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.
                    }
                }
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章