- Huawei Watch GT Runner 2 – óra a futóra?
- Ez most a legjobb robotporszívó. Kérdőjel? De nem olcsó. Pont.
- Áprilisban érkezhet a OnePlus Ace 6 Ultra, közben új tabletek is készülnek
- Oppo Pad Mini néven készülhet a gyártó új, kompakt, prémium táblagépe
- Új Xiaomi Mijia etető érkezik 5 MP-es kamerával és éjjellátással
- Fotók, videók mobillal
- iPhone topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Áprilisban érkezhet a OnePlus Ace 6 Ultra, közben új tabletek is készülnek
- Jövő hónapban debütál az Oppo Find X9 Ultra
- Xiaomi 17 - még mindig tart
- Google Pixel topik
- Magisk
- Íme az új Android Auto!
- Xiaomi 12T Pro - kétszínű, mint a kétszázas
-
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
-
Karma
félisten
Nem véletlenül írtam privátot, hogy kifejtem bővebben

No de (hahaha), akkor következzen egy egyszerű példa a te feladatodra. Egy plusz modul kell hozzá, a when. Ott kezdődik a dolog, hogy a requestből készíteni kell egy olyan változatot, ami callback függvény helyett egy ígérettel tér vissza.
(Az ígéret egy olyan objektum, ami majd valamikor a jövőben fog kiértékelődni, vagy sikeresen, vagy nem. Mindkét ágra fel lehet iratkozni külön, és ha láncba fűzi őket az ember, akkor úgy viselkedik, mint a rendes függvényhívások - az eredmények lépésről lépésre átpasszolódnak, a hiba meg az egészet megszakítja.)
Szóval a request függvényt be kell foglalni (ezt csinálja a requestP függvény), utána mehet a lényeg. Bátorkodtam kicsit egyszerűsíteni a kigyűjtésen, ha már van a cheerionak is map függvénye.
var when = require('when'),
cheerio = require('cheerio'),
request = require('request');
function requestP(url) {
return when.promise(function (resolve, reject) {
request(url, function (err, res, body) {
if (err) {
return reject(err);
} else if (res.statusCode !== 200) {
err = new Error("Unexpected status code: " + res.statusCode);
err.res = res;
return reject(err);
}
resolve(body);
});
});
}
requestP('https://news.ycombinator.com')
.then(function (html) {
var $ = cheerio.load(html);
return $('span.comhead').map(function (i, element) {
return $(element).prev();
});
})
.then(function (articles) {
console.log(articles);
})
.catch(console.error); -
Karma
félisten
Azért bonyolultabb ennél a helyzet, mert a request szigorúan aszinkron működik, azt mondani a Node-nak hogy "most fagyjál le amíg megjön a válasz" nem lehet.
Ha csak egy valamit akarsz csinálni, kirakhatod a callback függvényt egy külön, külső függvénybe, és név szerint adhatod oda a requestnek. Ezzel el lehet lavírozni, de tisztább, ha vagy az async, vagy a promise-alapú modulok (Q, when) valamelyikét berakod és láncot fűzöl a jövőbeli hívásokból.
Amit linkeltem forrás a whent használja erre.
-
Karma
félisten
Persze, csak rakd be a végső kiírást a feldolgozás végére.
var request = require('request');
var cheerio = require('cheerio');
var szoveg = new Array();
request('https://news.ycombinator.com', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
$('span.comhead').each(function(i, element){
var a = $(this).prev();
szoveg.push(a);
});
}
console.log(szoveg); // <--- lentről, ide
});
Új hozzászólás Aktív témák
- Milyen videókártyát?
- Star Trek
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- Le Mans Ultimate
- suste: Openwrt Barrier Breaker 14.07 saját verzió Tp-link routerekre
- Skoda topik (Favorit és visszafelé)
- Vezeték nélküli fülhallgatók
- Milyen monitort vegyek?
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- E-roller topik
- További aktív témák...
- Lenovo IdeaPad Slim 3/15.3" WUXGA/Snapdragon X X1-26-100 Processor/24GB/1TB SSD/GARANCIA
- MiIphone 13 White 128Gb-100% akku-13 tok+fóliák
- XFX Radeon RX 580 GTS XXX Edition 8GB GDDR5 256bit
- Samsung 28" T28E310EW LED Televízió-monitor eladó
- HP All In One Pc HP 23.8"FHD/Ultra 5 125U /16GB/512GB SSD/HP GARANCIA
- Honor 200 Lite 256GB, Kártyafüggetlen, 1 Év Garanciával
- Új és újszerű 17-18 Gamer, irodai, üzleti készülékek nagyon kedvező alkalmi áron Garanciával!
- AKCIÓ! Gigabyte B650M R7 8700F 64GB DDR5 1TB SSD RX 7800 XT 16GB LianLi VectorV100R RGB TG 750W
- Innosick, Samsung Laptop memória DDR5 5600Mhz // ÚJ // Számla // Garancia //
- AKCIÓ! Asrock B450M R5 5500 16GB DDR4 512GB SSD GTX 1660 Super 6GB Zalman T3 Plus DeepCool 400W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



