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ć.