关于then中的值的读取方法

class List {
    constructor(url, args, list) {
        this.url = url;
        this.args = args;
        this.list = list;
    }

    getData() {
        ajax.request({url: this.url, args: this.args})
            .then(function (contents) {
                this.list.data = contents;
                // console.log(contents);
            },function (err) {
                console.error(err);
            });
    }
}

class DataList extends List {
    constructor(url, args, list) {
        super(url, args, list);
    }
}


class SearchList extends List {
    constructor(url, args, list) {
        super(url, args, list);
    }
}



//test
let obj = {};
let dataList = new DataList('/getData/dataList', null, obj);

dataList.getData();

console.log(dataList);

ajax是另外一个文件中定义的一个方法,传入的参数是一个对象。

问题一:List类里的getData方法中的this.list报错,不知道为什么?求大神解答!
问题二:想做的就是从then里边读出contents,有没有其他更好的方法能够读出来呢?(除了console.log)目前能想到的就只有存在某个对象的属性中,其他测试了一下都读不到contents的值。

阅读 3k
2 个回答

问题一:this作用域的问题,改成箭头函数即可

ajax.request({url: this.url, args: this.args})
.then((contents) => {
    this.list.data = contents;
    // console.log(contents);
},function (err) {
    console.error(err);
});

问题2没有看懂,如果不想从console.log看,那就从调式工具的network看,数据给的格式
如果想在控制台里打印的数据美观点,可以用console.table

用 await async 语法

推荐问题