- Továbbfejlesztette az SP szériás, kompakt tápegységeit a Lian Li
- Itt van az ASUS legfrissebb, AMD platformra épülő mini PC-je
- Jegeli pénznyelő projektjét az Apple, az okosszemüvegben látják a jövőt
- Olcsónak ígérkező, madzagos egér jelent meg az ASUS ROG-os portfóliójában
- Kriptobányászatra használta az AI-ra vásárolt hardvereket a Northern Data?
-
PROHARDVER!
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
- One otthoni szolgáltatások (TV, internet, telefon)
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Samsung Galaxy S25 - végre van kicsi!
- Torrent meghívó kunyeráló
- Vivo X200 Pro - a kétszázát!
- Milyen monitort vegyek?
- Vicces képek
- Anglia - élmények, tapasztalatok
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Lakáshitel, lakásvásárlás
- További aktív témák...
- Iphone 15 Pro Max 512GB Natúr titán
- DELL Latitude 5520 Strapabíró Érintős Laptop 15,6" -65% i7-1185G7 16/512 Iris Xe FHD IPS
- Intel Core i7 10700/RTX3060/16Gb ram/256Gb SSD
- DELL Latitude 5520 Strapabíró Érintős Laptop 15,6" -65% i7-1185G7 16/512 Iris Xe FHD IPS
- DELL Latitude 5520 Strapabíró Érintős Laptop 15,6" -65% i7-1185G7 8/512 Iris Xe FHD IPS
- Samsung Galaxy Z Fold 6 Silver Shadow Hajlítható csúcstechnológia, AI extrákkal 2028. 01.24 Gari
- Új Asus 18 ROG WQXGA MiniLED 240Hz G-Sync i9-14900HX 32GB 2TB SSD Nvidia RTX 4090 16GB 175W Garancia
- Bomba ár! Lenovo ThinkPad T470 - i5-G6 I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Garancia!
- BESZÁMÍTÁS! Gigabyte A520M R5 5500 16GB DDR4 500GB SSD GTX 1660 Super 6GB CHIEFTEC Libra Zalman 500W
- Telefon felvásárlás!! Xiaomi Redmi Note 10, Xiaomi Redmi Note 10s, Xiaomi Redmi Note 10 Pro
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest