2016-01-14 14 views
23

W JavaScript, kiedy jest zgłaszany ten błąd?Co oznacza ten błąd - Uncaught TypeError: Czytasz już?

enter image description here

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 
} 

Czy jest to rodzimy błąd obietnicy? Co to oznacza? Google nie pokazuje żadnych wyników.

Odpowiedz

37

Myślę, że oznacza to, że ciało zostało już odczytane przy użyciu albo .json() .text() itd. ... Po uruchomieniu x.json() zajmuje ciało odpowiedzi i odczytuje je do JSON. Jeśli spróbujesz ponownie uruchomić x.json(), spowoduje to błąd. Więc możesz użyć tylko jednej z metod these. Zakładam więc, że gdzieś w swoim kodzie czyta się ciało tej samej odpowiedzi, ponownie używając jednej z metod Ciała.

Myślę, że właśnie dlatego oferują one metodę Body.bodyUsed. Więc możesz zobaczyć, czy został już przeczytany.

5

Ten błąd oznacza, że ​​rozwiązałeś obietnicę (w tym przypadku używasz Body.json()) więcej niż raz.

Można sprawdzić metody ciało odpowiedź z dopiskiem I załączony poniżej i trzeba flagę aby sprawdzić, czy obietnica została rozwiązana lub nie: w tym przypadku, można użyć Body.bodyUsed

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

HTH

+1

Właśnie spotkałem się z tym błędem. Nie musisz dwukrotnie obiecywać obietnicy, co zresztą i tak nie powinno być możliwe bez zbędnych wewnętrznych cech obietnicy. Musisz tylko dwukrotnie wywołać '.then()'. Jest udokumentowane, że dwukrotne wywołanie '.then()' jest obsługiwane. Zobaczę, czy uda mi się sprowadzić minimalny przykład. Mój kod wyświetlający to jest tutaj: https://tonicdev.com/hippietrail/57611741f056621300ecd1e2 – hippietrail