【问题标题】:"unexpected end of output" error on response.json()response.json() 上的“输出意外结束”错误
【发布时间】:2016-07-14 09:27:35
【问题描述】:

我在 response.json() 上不断收到“输出意外结束”错误。根据我在下面做的事情,我是否离题了?

Promise.all([requestOne, requestTwo])
  .then(responses => {
    responses.reduce((promise,response) => {
        return promise.then(() => {
             return response.json()
        }).then(result => result)
    }, Promise.resolve());
  })

【问题讨论】:

  • requestOnerequestTwo 是什么? .then(result => result) 的目的是什么?
  • fetch 返回一个Promise 对象;你为什么使用.reduce()Promise.resolve()?是来自服务器JSON 的响应吗?不确定预期的结果是什么?你可以创建 jsfiddle jsfiddle.net 来重现问题吗?
  • requestOne 和 RequestTwo 是返回 json 的请求。我得到响应,然后我必须解析为 json。 .json() 返回我需要这些连续运行的另一个承诺。使用 reduce 可以让我链接它们。但是 response.json() 返回那个错误。 esnextb.in/?gist=ad8d068078fc762c1434358357fdb0d3
  • 问题似乎是{mode:"no-cors"} 设置为fetch。尝试在fetch 选项中将{method:"get"} 替换为{mode:"no-cors"},请参阅plnkr.co/edit/ymKEeudclUp5ydSaijoP?p=preview
  • 哈哈,是的,我在答案中做出了回应。谢谢

标签: javascript promise fetch


【解决方案1】:

编辑、更新

问题是{mode:"no-cors"} 设置为fetch。在fetch 调用时用{method: "get"} 替换{mode:"no-cors"}

plnkrhttp://plnkr.co/edit/ymKEeudclUp5ydSaijoP?p=preview

【讨论】:

  • 我会接受答案,但我的解决方案也确实有效。问题是我使用的是 no-cors,那一定不能很好玩。我不确定地图会保持顺序正确吗?现在太忙了,没时间看。
  • 如果需要按顺序返回结果,您可以使用Array.prototype.shift()而不使用Promise.all(),参见stackoverflow.com/questions/35777616/…
  • @TonyVeigel 是的,您的解决方案返回了您期望的结果。
  • 我读到了这样做的方法,但我找不到这篇文章。如果我遇到它,我会链接到它。感谢您的帮助!
  • @TonyVeigel 更新了帖子,提供了实际问题的解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多