Que signifie cette erreur-Uncaught TypeError: déjà lu?

En Javascript, quand cette erreur est-elle levée?

entrez la description de l'image ici

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
}

Est - ce une erreur de promesse native? Qu'est-ce qu'il implique? Google ne montre aucun résultat trouvé.

34
demandé sur Tushar 2016-01-14 12:51:57

2 réponses

Je pense que cela signifie que le corps a déjà été lu en utilisant l'un ou l'autre .json ().texte() etc... Lorsque vous exécutez X. json (), il prend le corps de la réponse et le lit dans JSON. Si vous essayez d'exécuter X. json() à nouveau, cela vous donnera cette erreur. Vous ne pouvez donc utiliser qu'une seule fois l'une des méthodes de ces. Donc, je suppose que quelque part dans votre code, il lit à nouveau le corps de la même réponse en utilisant l'une des méthodes du corps.

Je pense que c'est pourquoi ils offrent la Body.bodyUsed méthode. De sorte que vous pouvez voir si il a été lu déjà.

50
répondu gkkirsch 2016-01-25 19:40:51

Cette erreur signifie que vous avez résolu la promesse (dans ce cas, vous utilisez Body.json()) plus d'une fois.

Vous pouvez vérifier les méthodes du corps de réponse à partir de la référence que j'ai jointe ci-dessous et vous avez besoin d'un indicateur pour vérifier si la promesse a été résolue ou non: dans ce cas, vous pouvez utiliser Body.bodyUsed

Référence: https://developer.mozilla.org/en-US/docs/Web/API/Response

HTH

6
répondu Winters 2016-05-27 01:00:54