- MWC 2026: Részt vesz a Vivo, megmutatják az X300 Ultrát
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Samsung Galaxy A52s 5G - jó S-tehetség
- Samsung Galaxy A56 - megbízható középszerűség
- Hatodik bétánál jár a Galaxy S25
- Magyarországra érkezett a Mijia, a Xiaomi okos háztartási nagygépeinek márkája
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Milyen okostelefont vegyek?
- Samsung Galaxy Z Fold5 - toldozás-foldozás
-
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
- Milyen billentyűzetet vegyek?
- A fociról könnyedén, egy baráti társaságban
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Kigolyózta magát a Netflix a Warner-csatából
- Eredeti játékok OFF topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Dögrováson lévő Samsung telefonból még mindig csinálhatunk DeX-es minigépet
- Tőzsde és gazdaság
- Sorozatok
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- Vásárlunk iPhone 12/12 Mini/12 Pro/12 Pro Max
- Bomba ár! Lenovo ThinkPad T460s - i5-6GEN I 8GB I 192GB SSD I 14" FHD I Cam I W11 I Garancia!
- DELL Latitude 5285 (Tablet) 2 az 1 ben,FHD +,12.3,i5-7200U,8GB 128GB SSD,LTE, WIN11
- BESZÁMÍTÁS! ASRock B250M i5 6600K 16GB DDR4 250GB SSD GTX 1650 4GB BITFENIX DeepCool 400W
- Akció! Dell Latitude 7200 2-in-1,12.3",FHD,i5-8365U,8GB,256GB SSD,WIN11,Tablet,LTE
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


