【问题标题】:Why i have make another .then to pull a promiseValue from fetch promise为什么我要制作另一个 .then 从 fetch promise 中提取一个 promiseValue
【发布时间】:2019-03-28 07:13:52
【问题描述】:

你好。首先 .then 被解析并有一个值响应。为什么如果我记录 res.text 它只是一个承诺,而当我再次使用相同的 return 时,next .then 使用相同的 res.text 它现在是一个字符串? 有人可以为我解释一下吗:)?

【问题讨论】:

  • 简短的回答是 - 这就是 fetch 的指定和实现方式 - 所以,你必须“制作另一个 .then”的原因是因为这就是你使用 fetch API 的方式

标签: javascript promise fetch


【解决方案1】:

fetch 函数返回一个通过 Body 响应解析的 Promise。

转述自Mozilla: FetchMozilla: Body

fetch() 方法...返回一个 Promise,该 Promise 解析为对该请求的响应,无论它是否成功...一旦检索到响应,有许多方法可用于定义主体的内容内容是以及应该如何处理。

如果您随后导航到Body 的文档,您会看到它上面有许多方法。 Body.text() 方法:

获取一个响应流并将其读取完成。它返回一个用 USVString(文本)解析的承诺。响应总是使用 UTF-8 解码。

您所描述的行为是 fetch API 的预期行为方式。

【讨论】:

    【解决方案2】:

    Fetch API 返回一个解析为响应的承诺。 Response 本身有一个 text() 方法,它也返回一个 Promise。您可以使用此方法将 Response-Stream 作为文本读取。见https://developer.mozilla.org/en-US/docs/Web/API/Response

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 2021-03-08
      • 2021-08-23
      • 2019-03-20
      • 2017-05-03
      • 2015-02-07
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多