Console.log nie dziala po fetch .then

Console.log nie dziala po fetch .then
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
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.

Kopiuj
    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...
obscurity
  • Rejestracja: dni
  • Ostatnio: dni
3

wywołujesz

Kopiuj
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?)

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8495
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).

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

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

Możesz wrzucić poprawiony kod?

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
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

Kopiuj
      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) {
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

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

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
1

Dodaj drugi callback na błąd:

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

i daj znać czy coś wypluło

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 46
0

@obscurity: niestety nic sie nie pokazalo

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
0

a tak:

Kopiuj
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?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1
Kopiuj
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?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.