【发布时间】:2020-12-10 11:34:19
【问题描述】:
我想开始学习 OOP 并使用 fetch 来获取信息。但是我在班级之间的交流方面很挣扎。我无法将信息获取到另一个类以进行进一步处理。
我的代码
Fetch.js
class Fetch {
constructor(data) {
this.data = data;
}
async fetchData(path) {
const res = await fetch(path)
const { status } = res;
if (status < 200 || status >= 300) {
return console.log("Oh-Oh! Seite konnte nicht gefunden werden: " + status)
}
this.data = res.text();
}
}
export default Fetch;
Day08.js
1 | import Fetch from "./Fetch.js";
2 |
3 | class Day08 extends Fetch {
4 | constructor() {
5 | super(data);
6 | this.doSomething();
7 | }
8 |
9 | doSomething() {
10 | console.log(this.data)
11 | }
12 | }
13 |
14 | new Day08();
在我的控制台中,我在第 6 行第 8 天得到 data is not defined。
问题
所以我的问题是,我如何使用从获取中获得的数据?
我还尝试以不同的方式写我的doSomething(),如下所示:
doSomething() {
const fetching = new Fetch.fetchData("./Inputs/08-data.txt");
console.log(fetching)
}
但是我也得到那个数据没有定义。
我不知道如何获取这些信息并在不同的课程中使用它,我试图在网上四处寻找答案,但找不到答案。
每次获取的输入都会改变,以获取不同的数据。这就是为什么我试图避免使用静态返回来创建我的 Fetch 类。
如果有人能帮我解决这个问题,那就太好了。
【问题讨论】:
-
将
fetch建模为一个类有相当大的固有问题。 OOP 不仅仅是有类,它是关于通过类建模的东西。Fetch类甚至可以做什么?它调用fetch并进行一些处理。它与fetch.then(/* ... */)确实没有什么不同,但它的灵活性较低,因为您已经隔离了承诺,这使得该类相当难以使用。更好的设计是允许添加更多代码来处理已解决的承诺。但这与.then相同。您可以改为公开承诺,但是,为什么要开设课程?
标签: javascript class oop fetch