- Honor Magic7 Pro - kifinomult, költséges képalkotás
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Fotók, videók mobillal
- Android szakmai topik
- Android alkalmazások - szoftver kibeszélő topik
- Megérkezett Magyarországra a Huawei Mate X7
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Xiaomi 15T Pro - a téma nincs lezárva
- OnePlus Nord 5 - lehűti a kedélyeket
- Samsung Galaxy Watch7 - kötelező kör
-
Mobilarena
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Jim-Y
veterán
Sziasztok.
Promise-os kérdésem lenne. Arra lennék kváncsi, hogy hogyan lenne szerintetek érdemes használni, vagy hogy elegáns használni a promise-okat. Adott a következő szituáció:
- van egy REST service:
server.get( '/get/articles', getArticles );
- van azt ezt feldolgozó getArticles függvény
- illetve van egy articleProvider osztály/modul amit a getArticles függvényből hívok meg. Ponstosabban annak findAll metódusát. Ez felelős az adatbázisból való kiolvasásértA kérdés, hogy a getArticles / findAll függvényt hogy kéne megrni, több (működő) verzió is született már, de nem tudom eldönteni, hogy melyik a szép/jó/használható megoldás.
Megoldás 1, ez született legkésőbb, szerintem ez a legjobb:
function getArticles( req, res, next ) {
var promise = new mongoose.Promise;
promise.onResolve(function( err, articles ) {
if( err ) {
console.error( err );
res.send("Could not read articles");
}
res.send( articles );
});
articleProvider.findAll( promise );
}ArticleProvider.prototype.findAll = function( promise ) {
this.Article.find({}, function ( err, articles ) {
if( err ) {
promise.reject(new Error( err ));
}
promise.fulfill( articles );
});
}Megoldás 2:
function getArticles( req, res, next ) {
articleProvider.findAll().fulfill(res);
//articleProvider.findAll()
.reject(new Error("Valamiért rejecteljük"));
}ArticleProvider.prototype.findAll = function() {
var promise = new Promise,
self = this;
promise.onResolve(function( err, res ) {
if( err ) {
console.error( err );
}
self.Article.find({}, function( err, articles ) {
if( err ) {
promise.reject(new Error( err ));
}
res.send( articles );
});
});
return promise;
};Ez a reject-re amúgy sem működik jól, mert a res-t nem tudjuk átadni.
Megoldás 3:
Ez jó, illetve kompakt, de igy meg nem tudjuk rejectelni ha kéne.
function getArticles( req, res, next ) {
var promise = articleProvider.findAll();
promise.onResolve(function( err, articles ) {
if( err ) {
res.send(new Error( err ));
}
res.send( articles );
});
}ArticleProvider.prototype.findAll = function() {
return this.Article.find().exec();
};stb, még tudnék pár verziót összerni

Vélemények?
Üdv, és köszi. Remélem érthető a példakód ^^
megj: mindhárom megoldás működik egyébként.
Új hozzászólás Aktív témák
- UHD filmek lejátszása
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Új Xeonokkal szorongatná meg az Intel az AMD-t
- Elemlámpa, zseblámpa
- Apple asztali gépek
- Mesterséges intelligencia topik
- Milyen monitort vegyek?
- További aktív témák...
- Új állapotban! Lenovo ThinkPad T14 Gen 3 i5-1245/16gb ram/256 ssd FHD+ garancia
- !AKCIÓ! GAMER PC Intel Core i9-10900X/ASUS ROG Strix X299-E Gaming/NVIDIA GeForce RTX 3080/32 GB RAM
- Hankook Winter I cept evo téli 205/55 R16 91 H TL / Gyári acélfelni gumival 16x6,5 Salgótarjánban
- Dobozos ÚJ! Lenovo IdeaPad Slim 3 15IRH8 INTEL I7-13620H, 16GB RAM, 1TB SSD, garancia 2028.06
- BESZÁMÍTÁS! Palint Gaming Pro RTX 3070 Ti 8GB videokártya garanciával hibátlan működéssel
- PC konfig /Ryzen 7 9800X3D, 32GB RAM, 1TB SSD/ akciós áron eladó!
- BESZÁMÍTÁS! ASRock X870 R9 7950X3D 32GB DDR5 1TB SSD RTX 4090 24GB Be quiet Pure Base 501 LX white
- iPhone SE 2020 64GB White-1 ÉV GARANCIA - Kártyafüggetlen, MS4481, 100% Akksi
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- HP EliteOne 800 G5 All-in-One i5-8500 16GB 512GB 23.8" Érintőkijelző!! 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



