• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Undandled Reject

0 głosów
38 wizyt
pytanie zadane 12 marca w JavaScript, jQuery, AJAX przez ShiroUmizake Nałogowiec (45,000 p.)

Czy jest jakiś sposób by obsłużyć reject, robienie dwóch promisów to dla mnie nie rozwiązanie:

Z czym mam problem

Mamy sobie o takiego slugParsera:

const ApiConfig = require('../config/api');

const slugParser = {
  parseSlug: function(category, filter = '') {
    return filter === '' ? ApiConfig.route[category] : `${ApiConfig.route[category]}${filter}`
  }
}

module.exports = slugParser;

szuka routingu odpowiadającego danej kategorii oraz jeśli filter nie jest pusty dokleja pole po którym będzie przeszukiwanie się odbywało w API, oczywiście kategorii może nie być, ale z poziomu parsera nie powinno go obchodzić. Potem to idzie do serwisu, który wysyła zapytanie do API.

static sendToApi(data, route, typesConnect) {
    var corectResponse = true;
    return new Promise( (resolve, reject) => {
      connect[typesConnect](`http://localhost:${apiConfig.port}${route}`, {form:data},
        (err,httpResponse,body) => {
          if (err) {
            reject(err);
          }
        try {
          JSON.parse(body);
        } catch(e) {
          corectResponse = false;
        }
        resolve(corectResponse ? JSON.parse(body) : false);
      })
    })
  }

I tutaj mam problem, owszem ta metoda działa,  ale no to jest słabe ogólnie mówiąc. Tylko, że jak stawiam tutaj reject i próbuje catch to dostaje wyżej wymieniony błąd. Wiem, że ogólnie jest to duży problem node, ale czy jest w miarę spoko rozwiązanie na to? Patrzałem trochę po necie, to wszystkie wyglądały jak jakieś hat-tricki. Będę jeszcze próbował łapać wyjątki globalnie, ponoć express powinien sobie z tym poradzić.

komentarz 12 marca przez adrian17 Mędrzec (199,700 p.)

Tylko, że jak stawiam tutaj reject

tutaj?

próbuje catch

gdzie? Mowisz o JSON.parse(body)? On raczej nie ma związku z "unhandled reject".

czym jest obiekt `connect`? Co w nim jest?

Co ma górny blok kodu do dolnego?

komentarz 13 marca przez ShiroUmizake Nałogowiec (45,000 p.)

connect to biblioteka do komunikacji z API, który wysyła requesty.

Jak tutaj tak wstawie.

{
          JSON.parse(body);
        } catch(e) {
          reject('cokolwiek');
        }

Gdy potem to próbuje odebrać.

  app.get('/oferty/:category/:value?', function (req, res) {
    app.get('OfferService').get(SlugParser.parseSlug(req.params.category, req.params.value))
      .then(response => {
          let offerSiteControler = new OfferSiteControler(req, app, response);
          res.render('pages/offer.ejs', offerSiteControler.getData());
       }).catch(error=>app.get('ErrorHandler').handleError(res));
  });

to się sypie ;/ o unhandled reject.

Globalnie App też nie jest w stanie wyłapać wyjątku.

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 53 wizyt
0 głosów
0 odpowiedzi 28 wizyt
0 głosów
1 odpowiedź 104 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

66,384 zapytań

113,137 odpowiedzi

239,497 komentarzy

46,642 pasjonatów

Przeglądających: 299
Pasjonatów: 4 Gości: 295

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...