Baromi nehéz volt megtalálni egyáltalán a fogalmat, hogy flow-based programming. Aszinkron kódnál egyedül ez oldja meg a pyramid of doom problémát, a többi csak gyenge próbálkozás ehhez képest... Kb egy hónapja én is agyalok egy ilyen rendszer készítésén, csak 3 év késésben vagyok a noflo-hoz képest, az még belefér... Jó látni, hogy másnak is vannak hasonló ötletei... :D
Ha JavaScript, akkor a kód miért nem JavaScriptben van? Ennyi erővel lehetett volna TypeScript, vagy ClojureScript is, kb ugyanannyi köze van a JavaScript-hez.
A másik dolog, hogy ezeknek a JSON fájloknak a megkonstruálása semmivel sem barátságosabb, mint Ant scripteket írni. Mert kb. ugyanarról van szó, csak éppen ez CoffeeScript nem általánosan használható, mint az Ant.
A "pyramid of doom" problémát pedig nem tudom, hogy ez miért oldaná meg. Azt szépen meg lehet oldani JavaScript-ben is.
Ha JavaScript, akkor a kód miért nem JavaScriptben van? Ennyi erővel lehetett volna TypeScript, vagy ClojureScript is, kb ugyanannyi köze van a JavaScript-hez.
Ez imho egyéni szociális probléma, oldd meg magadban. (Egyébként én sem szeretem a coffeescriptet, ill. typescriptet, de legalább olvasni megtanultam őket.)
A "pyramid of doom" problémát pedig nem tudom, hogy ez miért oldaná meg. Azt szépen meg lehet oldani JavaScript-ben is.
Persze, senki nem mondta, hogy kötelező a coffeescript, a probléma megközelítéséről volt szó. Az eddigiek, mint async vagy Q nem elég jók.
co, de kismillió más lehetőség is van (promise, bluebird, vagy csak simán nem ágyazod egymásba a callbackeket). A cikkemben leírtam szinte minden lehetőséget.
// sequential
co(function *(){
var a = yield get('http://google.com');
var b = yield get('http://yahoo.com');
var c = yield get('http://bing.com');
})();
// parallel
co(function *(){
var a = get('http://google.com');
var b = get('http://yahoo.com');
var c = get('http://bing.com');
var res = yield [a, b, c];
})();
Az utóbbi öt évben, amióta kijött a node.js, erre az alapproblémára már ezerféle megoldást láttam. Mi a node.js/joyent által ajánlott hivatalos mód? Azaz, ha jön egy kezdő, aki ma ismerkedik meg a rendszerrel, honnan értesülhet róla, hogy honnan és mit kell választani a témában? A különböző megoldások kompatibilisek egymással? Előfordulhat az, hogy több node csomagot használok, amiben az egyik így, a másik úgy oldotta meg a problémát.
A lényeg, hogy nem helyben fejted ki a függvényedet (függvénykifejezés), hanem valahol deklarálod a függvényedet, és azt adod át. Így nem ágyazol egymásba függvényeket, csak egymás után hívod meg őket. OOP esetén még szükség lehet a metódusokat hozzákötni az objektumodhoz (bind) és akkor ezt adni át.
function readHandler(err, bytesRead, buffer) {
}
function openHandler(err, fd) {
if (!err) {
fs.read(fd, new Buffer(100), 0, 100, null, readHandler);
}
}
fs.open(path, 'r', openHandler);
Előfordulhat az, hogy több node csomagot használok, amiben az egyik így, a másik úgy oldotta meg a problémát.
Ez miért lényeges számodra, hogy az hogyan oldotta meg? Neked csak az interface a fontos. Remélhetőleg használja a Nodejs-ben bevett callback(err, results...) formulát, vagy EventEmitter, vagy pedig Promise alapú (esetleg mindegyiket támogatja).
Ok, valami nagyobb mágiára számítottam. Én mindig is így programoztam, mert az anoním függvények létjogosultságát sosem értettem (ha máshol is fel lehet használni, akkor úgyis ki kell emelni, ráadásul a szerkesztőben könnyebb rákeresni, ha van neve).
Ez mondjuk kicsit az elektromos áramra mint "tiszta energiára" emlékeztet, ahol helyben nem szennyezek és terhelem a környezetet, hanem exportálom máshova. A kód így nem piramisba szerveződik, hanem szétszóródik, de végeredményben az olvashatósága nem sokat javul.
Baromi nehéz volt megtalálni
JavaScript
A másik dolog, hogy ezeknek a JSON fájloknak a megkonstruálása semmivel sem barátságosabb, mint Ant scripteket írni. Mert kb. ugyanarról van szó, csak éppen ez CoffeeScript nem általánosan használható, mint az Ant.
A "pyramid of doom" problémát pedig nem tudom, hogy ez miért oldaná meg. Azt szépen meg lehet oldani JavaScript-ben is.
Ha JavaScript, akkor a kód
Ez imho egyéni szociális probléma, oldd meg magadban. (Egyébként én sem szeretem a coffeescriptet, ill. typescriptet, de legalább olvasni megtanultam őket.)
Persze, senki nem mondta, hogy kötelező a coffeescript, a probléma megközelítéséről volt szó. Az eddigiek, mint async vagy Q nem elég jók.
Azt szépen meg lehet oldani
Válassz!
Köszönöm, megnézem. Az
Az utóbbi öt évben, amióta kijött a node.js, erre az alapproblémára már ezerféle megoldást láttam. Mi a node.js/joyent által ajánlott hivatalos mód? Azaz, ha jön egy kezdő, aki ma ismerkedik meg a rendszerrel, honnan értesülhet róla, hogy honnan és mit kell választani a témában? A különböző megoldások kompatibilisek egymással? Előfordulhat az, hogy több node csomagot használok, amiben az egyik így, a másik úgy oldotta meg a problémát.
NodeJs
bind
) és akkor ezt adni át.Ez miért lényeges számodra, hogy az hogyan oldotta meg? Neked csak az interface a fontos. Remélhetőleg használja a Nodejs-ben bevett
callback(err, results...)
formulát, vagy EventEmitter, vagy pedig Promise alapú (esetleg mindegyiket támogatja).Ok, valami nagyobb mágiára
Ez mondjuk kicsit az elektromos áramra mint "tiszta energiára" emlékeztet, ahol helyben nem szennyezek és terhelem a környezetet, hanem exportálom máshova. A kód így nem piramisba szerveződik, hanem szétszóródik, de végeredményben az olvashatósága nem sokat javul.