Console.log nie dziala po fetch .then

0

Czesc!
Bylby w stanie ktos mi wyjasnic, dlaczego przy takim kodzie, w konsoli pojawia mi sie tylko 1/5 i 2/5? Bledow zadnych nie wywala, console.logow tam dalej jeszcze jest sporo, a mimo tego, nic wiecej sie nie pojawia. O ile sam Fetch dziala, o tyle dalszego kodu nie jestem pewny.

    console.log('1/5')
    fetch(urls.getValidateUrl(this, ticket),{
      headers: {
        'Content-Type': content_type
      }
    },console.log('2/5'))
    .then(function (response) {
      console.log('3/5');
      response.text().then(function (text) {
        console.log('4/5');
        switch...
3

wywołujesz

fetch(..., {}, console.log('2/5'))

czyli wykonujesz console.log('2/5') co wypluwa na konsolę 2/5 i zwraca undefined, potem ten undefined przekazujesz jako trzeci parametr do fetcha. Nie wiem co robi trzeci parametr fetcha ale może to psuje? A może ten fetch wcale nie działa (skąd wiesz że działa skoro then się nie wykonuje?)

1

Ale na pewno ten dokument jest poprawnie ściągany (poprawne nagłówki, nie ma żadnego kodu błędu itp.?)
Ja bym jednak sprawdził w dev toolsach zakładkę network.

urls.getValidateUrl(this, ticket)

i to bym sprawdził, jakiego dokładnie stringa dostajesz z funkcji urls.getValidateUrl (cokolwiek to jest).

0

Usunalem juz trzeci parametr, wciaz nie dostaje odpowiedzi po .then.

Możesz wrzucić poprawiony kod?

0
Patryk27 napisał(a):

Usunalem juz trzeci parametr, wciaz nie dostaje odpowiedzi po .then.

Możesz wrzucić poprawiony kod?

Tak jest. Usunalem zbedne console logi. Upewnilem sie, ze version = CAS_VERSION_2_0 i wrzucilem console.log("test") w switch case. Dla pewnosci wrzucilem w kazdy case i w catch, ale no z tego co widze, to juz od .then kod nie dziala

      fetch(urls.getValidateUrl(this, ticket),{
        headers: {
          'Content-Type': 'text/xml'
        }
      })
      .then(function (response) {
        response.text().then(function (text) {
          switch (version) {
            case constant.CAS_VERSION_2_0:
              console.log('test');
              xml2js.parseStringPromise(text).then(function (result) {
1

Hmm, a próbowałeś uruchomić ten kod pod debuggerem? Chrome i Firefox mają całkiem sensowne.

1

Dodaj drugi callback na błąd:

.then(function(response) {
  ...
},
function(error) {
   console.log(error);
})

i daj znać czy coś wypluło

0

@obscurity: niestety nic sie nie pokazalo

0

a tak:

const response = await fetch(urls.getValidateUrl(this, ticket),{
        headers: {
          'Content-Type': 'text/xml'
        }
      });

const text = await response.text();

jest jakiś powód czemu nie używasz async/await tylko pakujesz się w callback hell?

1
const fetch = require('node-fetch');

Uruchamiasz swój kod za pomocą Node.JS czy w przeglądarce? - a jeśli w przeglądarce, to dlaczego wykorzystujesz node-fetch, a nie standardowe Fetch API?

1 użytkowników online, w tym zalogowanych: 0, gości: 1