【问题标题】: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 显示未找到任何结果。

【问题讨论】:

    标签: javascript promise typeerror


    【解决方案1】:

    我认为这意味着已经使用 .json() .text() 等读取了正文...当您运行 x.json() 时,它会获取响应的正文并将其读入 JSON。如果您尝试再次运行 x.json() ,它将给您该错误。所以你只能使用一次these 方法之一。因此,我假设在您的代码中的某处,它正在使用 Body 方法之一再次读取同一响应的正文。

    我认为这就是他们提供Body.bodyUsed 方法的原因。所以你可以看看它是否已经被读取了。

    【讨论】:

    【解决方案2】:

    这个错误意味着你已经多次解决了这个承诺(在这种情况下,你使用了Body.json())。

    您可以从我在下面附加的参考中检查响应正文方法,并且您需要一个标志来检查承诺是否已解决:在这种情况下,您可以使用Body.bodyUsed

    参考:https://developer.mozilla.org/en-US/docs/Web/API/Response

    HTH

    【讨论】:

    • 我也遇到了这个错误。您不需要两次解决承诺,如果不摆弄承诺的内部属性,这无论如何都是不可能的。您只需拨打.then() 两次即可。据记载,支持两次调用.then()。我会看看我是否可以总结出一个最小的例子。我的代码显示在这里:tonicdev.com/hippietrail/57611741f056621300ecd1e2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2011-03-01
    • 2012-11-06
    相关资源
    最近更新 更多