这个错误是啥意思 - 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: 已经读过?的主要内容,如果未能解决你的问题,请参考以下文章

这个错误是啥意思?

这个 NSZombie 错误消息是啥意思?

Django插入:这个错误是啥意思

这个错误在 nhibernate 中是啥意思

这个 MSVC++ 编译错误是啥意思

这个错误是啥意思?