这个错误是啥意思 - Uncaught TypeError: 已经读过?
Posted
技术标签:
【中文标题】这个错误是啥意思 - Uncaught TypeError: 已经读过?【英文标题】:What does this error mean — Uncaught TypeError: Already read?这个错误是什么意思 - Uncaught TypeError: 已经读过? 【发布时间】:2016-04-19 14:07:14 【问题描述】:在 javascript 中,这个错误是什么时候抛出的?
index.js
/**
* Created by tushar.mathur on 24/12/15.
*/
'use strict'
const _ = require('lodash')
const Rx = require('rx')
const createDataStore = require('./src/createDataStore')
const fetch = x => Rx.Observable.fromPromise(window.fetch(x))
const parseJSON = x => Rx.Observable.fromPromise(x.json()) // Line: 11 (Where the exception is thrown)
var create = _.partial(createDataStore, fetch, parseJSON)
module.exports =
create,
// Alias for legacy purposes
createDataStore: create,
createFetchStore: create
这是原生承诺错误吗?这意味着什么? Google 显示未找到任何结果。
【问题讨论】:
【参考方案1】:我认为这意味着已经使用 .json() .text() 等读取了正文...当您运行 x.json() 时,它会获取响应的正文并将其读入 JSON。如果您尝试再次运行 x.json() ,它将给您该错误。所以你只能使用一次these 方法之一。因此,我假设在您的代码中的某处,它正在使用 Body 方法之一再次读取同一响应的正文。
我认为这就是他们提供Body.bodyUsed
方法的原因。所以你可以看看它是否已经被读取了。
【讨论】:
如果确实需要阅读2次的解决方案:使用response.clone() github.com/whatwg/fetch/issues/196#issuecomment-171935172【参考方案2】:这个错误意味着你已经多次解决了这个承诺(在这种情况下,你使用了Body.json()
)。
您可以从我在下面附加的参考中检查响应正文方法,并且您需要一个标志来检查承诺是否已解决:在这种情况下,您可以使用Body.bodyUsed
参考:https://developer.mozilla.org/en-US/docs/Web/API/Response
HTH
【讨论】:
我也遇到了这个错误。您不需要两次解决承诺,如果不摆弄承诺的内部属性,这无论如何都是不可能的。您只需拨打.then()
两次即可。据记载,支持两次调用.then()
。我会看看我是否可以总结出一个最小的例子。我的代码显示在这里:tonicdev.com/hippietrail/57611741f056621300ecd1e2以上是关于这个错误是啥意思 - Uncaught TypeError: 已经读过?的主要内容,如果未能解决你的问题,请参考以下文章