节点获取 API | text() 代表什么? (承诺问题)
Node-Fetch API | What is text() stand for? (Promise issue)
谁能确切地告诉我 text() 是做什么的?我看到人们这样使用它,而且它确实有效:
async getRandomNumber() {
return await fetch(`${this.url}random`)
.then((result) => result.text())
.then((body) => {
const data = JSON.parse(body);
console.log(data);
})
}
重点是,在不使用 text() 的情况下,我最终无法获取数据,但以已解决的承诺结束
获取结果元素作为文本。还有其他方法,例如 json() 用于获取 JSON 类型的响应。查看 fetch api 文档以获取更多信息。 https://developer.mozilla.org/en-US/docs/Web/API/Response
.text()
方法 returns 承诺,解析为与使用 UTF-8 解码的原始响应文本对应的字符串。
.json()
方法 returns 一个承诺,解析为通过解析响应接收到的对象。通常在响应的内容类型为"application/json"
时使用
让我们假设,http 端点 returns 文本 "hello world" 作为响应。
在那种情况下 .json()
将失败,因为 "hello world" 不能被解析为 JSON.
反过来,如果http端点总是returns一个json,例如:{"text":"hello world"}
,两种方法都可以使用,但结果会不同。例如:
文本
fetch(URL)
.then((result) => result.text())
.then((data) => {
console.log(data); // string `{"text":"hello world"}`
})
json
fetch(URL)
.then((result) => result.json())
.then((data) => {
console.log(data); // object {text:"hello world"}
})
P.S。
如果您总是期望响应是一个 json 字符串并且您需要 field/values,那么使用 .text()
加 JSON.parse(data)
是没有意义的,因为您可以简单地使用 .json()
达到相同的结果。
谁能确切地告诉我 text() 是做什么的?我看到人们这样使用它,而且它确实有效:
async getRandomNumber() {
return await fetch(`${this.url}random`)
.then((result) => result.text())
.then((body) => {
const data = JSON.parse(body);
console.log(data);
})
}
重点是,在不使用 text() 的情况下,我最终无法获取数据,但以已解决的承诺结束
获取结果元素作为文本。还有其他方法,例如 json() 用于获取 JSON 类型的响应。查看 fetch api 文档以获取更多信息。 https://developer.mozilla.org/en-US/docs/Web/API/Response
.text()
方法 returns 承诺,解析为与使用 UTF-8 解码的原始响应文本对应的字符串。
.json()
方法 returns 一个承诺,解析为通过解析响应接收到的对象。通常在响应的内容类型为"application/json"
让我们假设,http 端点 returns 文本 "hello world" 作为响应。
在那种情况下 .json()
将失败,因为 "hello world" 不能被解析为 JSON.
反过来,如果http端点总是returns一个json,例如:{"text":"hello world"}
,两种方法都可以使用,但结果会不同。例如:
文本
fetch(URL)
.then((result) => result.text())
.then((data) => {
console.log(data); // string `{"text":"hello world"}`
})
json
fetch(URL)
.then((result) => result.json())
.then((data) => {
console.log(data); // object {text:"hello world"}
})
P.S。
如果您总是期望响应是一个 json 字符串并且您需要 field/values,那么使用 .text()
加 JSON.parse(data)
是没有意义的,因为您可以简单地使用 .json()
达到相同的结果。