2016-01-14 10 views
23

Javascript'te, bu hata ne zaman atılır?Bu hata ne anlama geliyor - Atanmamış TypeError: Zaten okuyor musunuz?

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 
} 

bir yerli vaadi hatası mı? Neyi ima ediyor? Google hiçbir sonuç bulunamadı.

cevap

37

Bedenin zaten .json() .text() vb. Kullanılarak okunmuş olduğu anlamına gelir. X.json() komutunu çalıştırdığınızda yanıt veren kişinin vücudunu alır ve JSON'a okur. X.json() 'ı tekrar çalıştırmayı denerseniz, size bu hatayı verecektir. Dolayısıyla, bir kez these yöntemlerinden birini kullanabilirsiniz. Bu yüzden kodunuzda bir yere gidiyorum, beden yöntemlerinden birini kullanarak tekrar aynı tepkiyi okuyor.

Bence bu yüzden Body.bodyUsed yöntemini sunuyorlar. Yani zaten okunmuş olup olmadığını görebilirsiniz.

5

Bu hata, söz vermeyi çözdüğünüz anlamına gelir (bu durumda, Body.json()'u birden çok kez kullanırsınız).

Bu aşağıda ekli ref gelen yanıt vücut yöntemlerini kontrol edebilir ve söz çözümlenmiş ya da değil olup olmadığını kontrol etmek için bir bayrak gerekir: bu durumda, kullanabileceğiniz Body.bodyUsed

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

HTH

+1

Sadece bu hatayı alıyorum. Sözü iki kere çözmenize gerek yok, bu da vaatin iç özellikleriyle uğraşmadan imkansız olmalı. Sadece iki kere '.then()' demek zorundasınız. '.then()' i çağırmanın iki kez desteklendiği belgelenmiştir. En ufak bir örneği kaybolabileceğimi göreceğim. Bunu gösteren kodum şurada: https://tonicdev.com/hippietrail/57611741f056621300ecd1e2 – hippietrail