Hacker News

API e betere ea melapo ea khoneha bakeng sa JavaScript

Maikutlo

17 min read Via blog.cloudflare.com

Mewayz Team

Editorial Team

Hacker News

JavaScript's Streams API e na le Bothata - Mme Bahlahisi ba Qetela ba Bua ka Eona

Haeba u kile oa leka ho sebelisa Streams API ho JavaScript bakeng sa eng kapa eng e fetang mohlala oa buka, u utloile ho ferekana. Ke eng e lokelang ho ba mokhoa o motle, o ka kopanyang bakeng sa ho sebetsana le lintlha tse latellanang - ho bala lifaele, ho sebetsana le likarabo tsa HTTP, ho fetola li-database ka nako ea sebele - hangata e fetoha verbose boilerplate, semantics e ferekanyang ea backpressure, le sebaka sa API se ikutloang eka ke Java ea khoebo ho feta JavaScript ea kajeno. Puisano e mabapi le ho aha sebaka sa pele sa ho phallela e ntse e tsoela pele ka litlhahiso tsa TC39, lipuisano tsa moralo le merero e bulehileng ka lilemo. Ka 2026, e ntse e fihla boemong bo holimo. Potso ha se hore na API ea streams e betere ea khonahala - ke hore na "betere" e shebahala joang, le hore na ke eng e ntseng e re sitisa.

Moo API ya Hona Jwale Melapo e Fanang Nako e Kgutshwane

The WHATWG Streams Standards, e matlafatsang ReadableStream, WritableStream, le TransformStream ho pholletsa le porausara le linako tsa ho sebetsa joalo ka Node.js le Deno, e bile katleho ea 'nete ea boenjiniere. E tlisitse khatello ea maikutlo, ho hlakoloa, le ho pheta-pheta ha async ho ts'oaroa ha data ea sebaka sa marang-rang. Empa ka ts'ebetso, API e kopa mohlahlami haholo bakeng sa ts'ebetso e tloaelehileng. Ho theha mokhoa o bonolo oa ho fetoha ho hloka ho kenya TransformStream ka mokhoa oa fetola, ho laola lilaoli, le ho sebetsana ka hloko le li-semantics tsa flush - tsohle li lekana le chelete ea mapa() holim'a likaroloana.

Bapisa sena le tsela eo bahlahisi ba sebetsang ka lihlopha. Array.prototype.map(), filter(), le fokotsa() li ka qaptjoa, lia baleha, 'me li hloka mokete oa letho. The Streams API ha e fane ka mofuta ona oa ergonomic ka ntle ho lebokose. Ho tsamaisa melaetsa hammoho ka .pipeThrough() ho sebetsa, empa ho aha mekhahlelo ea phetoho ke moo baetsi ba lahleheloang ke lihora le mamello. Phoso ea ho sebetsana le liketane tse kenngoeng liphaephe ke ntlha e 'ngoe ea bohloko - liphoso ha li phatlalatse ka mokhoa o hlakileng, 'me ho lokisa phaephe e robehileng hangata ho bolela ho kenya liphetoho tsa nakoana tsa ho rema lifate ho fumana hore na data e lahleloa kapa e senyehile hokae.

Ho boetse ho na le tlou ea Node.js ka phaposing. Node e na le ts'ebetsong ea eona ea lefa la morao-rao (stream.Readable, stream.Ngola), e leng pele ho maemo a WHATWG hoo e ka bang lilemo tse leshome. Litsamaiso tsena tse peli li sebelisana feela ka lisebelisoa tsa adaptara, 'me liphutheloana tse ngata tsa npm li ntse li sebelisa API ea khale. Bahlahisi ba sebetsang ho pholletsa le libaka - tlhahiso ea lehlakore la seva, ts'ebetso ea morao-rao, ts'ebetso e thehiloeng ho sebatli - ba qobelloa ho kopanya likarolo tse peli tse sa lumellaneng bakeng sa mohopolo o le mong.

Ekaba Joang Streams Streams e Betere

Litlhahiso tse 'maloa le liteko tsa sechaba li supa bokamoso bo bonolo ho bahlahisi. Mehopolo ea mantlha e lula e kopana holim'a melaoana e seng mekae: sebopeho se sebetsang, ho tsamaisana le async iterator, le boilerplate e fokotsehileng. Ak'u inahanele u khona ho ngola liphaephe tsa data tse phallelang ka mokhoa oa tlhaho ha u ntse u ngola liphetoho tse ngata - ketane .map(), .filter(), le .take() ka kotloloho molapong o baloang ntle le ho hloka ho haha ​​lintho tse mahareng tsa TransformStream.

Sena ha se boikaketsi. Iterator Helpers (hona joale e Mothating oa 4 ho TC39) e se e tlisa .map(), .filter(), .take(), .drop(), le .flatMap() ho hokahanya. Ho holisa mokhoa ona ho li-async iterators - le ka ho eketsa, ho melapo e baloang e pepesang [Symbol.asyncIterator] — ke mohato o latelang oa tlhaho. Linako tse ling tsa ho sebetsa le lilaebrari li se li qalile ho leka mokhoa ona, ho lumella baetsi ho ngola khoutu e kang:

Ntho e matla ka ho fetisisa ea ho phallela ke e nyamelang. Ha bahlahisi ba ka hlalosa liphetoho tsa data e le letoto la mesebetsi e bonolo - ntle le ho tšoenyeha ka balaoli, mekhoa ea queuing, kapa manual backpressure - ba haha ​​​​ka potlako, ba romela likokoana-hloko tse fokolang, 'me ha e le hantle ba thabela ho sebetsa le data ea ho phallela.

Sepheo ha se ho nkela API sebaka sa maemo a tlase ka botlalo. Ho tla lula ho na le linyeoe tsa ts'ebeliso - liprothokholo tsa moetlo, taolo ea memori e hlophisitsoeng hantle, ts'ebetsong ea binary codec - moo phihlello ea taolo e tobileng e leng bohlokoa. Empa bakeng sa 90% ea linyeoe tsa ts'ebeliso tse kenyelletsang ho bala, ho fetola, le ho ngola lintlha tse latellanang, karolo ea abstraction e lokela ho lumellana le bonolo ba mosebetsi.

Lithuto Tse Tsoang ho Ecosystems tse ling

JavaScript ha se puo ea pele ea ho loana le ergonomics ea ho phallela. Rust's Iterator le Streamlitšobotsi li fana ka tlhahiso e ka qaptjoang, e se nang litšenyehelo e lumellang bahlahisi hore ba hlophise ts'ebetso ntle le ho fana ka likoleke tse mahareng. Mojule oa Elixir oa Streamo fana ka palo e botsoa ka syntax e hloekileng, e sebetsang hantle. Esita le Java, e atisang ho nyatsuoa bakeng sa verbosity, e hlahisitse java.util.stream.Stream ho Java 8 ka API e hlakileng eo baetsi ba JavaScript ba tla e lemoha le ho e khalla.

Seo li-ecosystem tsena li se arolelanang ke boitlamo ba ho ho etsa hore taba e tloaelehileng e be bobebe. Ho bala faele, mela ea ho sefa, le liphetho tsa ho ngola ho nka mela e 3-5 ea khoutu e ka qaptjoang. Ho JavaScript's Streams API ea hajoale, ts'ebetso e ts'oanang e ka hola habonolo ho mela e 20-30 ha o ikarabella bakeng sa kaho ea melapo, ho sebetsana le liphoso le ho putlama ka nepo. Phapang ha e amane le bokhoni - e mabapi le ergonomics.

Tsela ea Python e boetse e ruta. Mesebetsi ea jenereithara e nang le chai e fana ka mokhoa oa tlhaho oa ho hlahisa le ho sebelisa data e latellanang ka botsoa. JavaScript le eona e na le mesebetsi ea jenereithara, empa ho e hokahanya le Streams API ho hloka hore e e phuthele ka lihahi tsa ReadableStream tse nang le li-control tse thehiloeng ho hula. Khokahano e matla lipakeng tsa lijenereithara le melapo - moo ts'ebetso ea jenereithara e ka fetohang molapo o baloang - e ka felisa sehlopha sohle sa li-boilerplate.

Kameho ea Sebele ea Lefatše ho Tsoelo-pele ea Kopo

Sena ha se taba ya thuto. Lintlha tsa ho phallela li khubung ea lits'ebetso tsa sejoale-joale tsa webo. Liketsahalo tse rometsoeng ke seva, likarabo tsa HTTP tse senyehileng, li-dashboards tsa nako ea nnete, ts'ebetso ea ho kenya lifaele, phallo ea tlhahiso ea mohlala oa AI - tsena ke likarolo tsa letsatsi le letsatsi, eseng linyeoe tse mpe. Ha ho le thata ho sebelisa bukana ea khale ea ho phallela, bahlahisi ba ka e qoba ka botlalo (ho boloka ntho e 'ngoe le e 'ngoe mohopolong, e sa keneng) kapa ba haha ​​liphaephe tse senyehang, tse thata ho li hlokomela tse fetohang mohloli oa liketsahalo tsa tlhahiso.

Nahana se etsahalang ka tekanyo. Sethala se kang Mewayz, se sebetsanang le lintlha ho pholletsa le mekhoa e 207 e kopanetsoeng ea khoebo - ho tloha liphaepheng tsa CRM le li-invoice ho ea ho lipalo tsa meputso le ho latela likepe - e sebetsana le lintlha tse ngata tse latellanang ka hare. Ts'ebetso ea ho romella kantle ho naha, tlhahiso ea litlaleho, ts'ebetso ea liketsahalo tsa webhook, le liapdeite tsa nako ea 'nete tsa dashboard kaofela li rua molemo ho phalleng hantle. Ha lipuo tsa mantlha li etsa hore ho phallela ho be thata, litšenyehelo lia ata ho mojule o mong le o mong le phallo e 'ngoe le e 'ngoe ea data. Baenjineri ba sethala ba qetella ba ahile likhakanyo tsa ka hare tsa ho phallela ka holim'a lintlha tsa puo, ba eketsa ho rarahana ho sa lokelang ho hlokahala.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
  • Ts'ebetso ea lifaele: Ho kenya le ho arola lifaele tsa CSV tse nang le mela e 100K+ ho hloka ho phallela ho qoba ho khathala ha memori - empa API ea hajoale e etsa le phetoho ea mantlha ea mola ka mola verbose
  • Li-dashboards tsa nako ea sebele: Lintlha tsa litlhahlobo tsa ho phallela ho tloha ho seva ho ea ho moreki ka SSE kapa melemo ea WebSocket ho tsoa ho liphetoho tse ka kopanngoang (aggregation, filtering, throttling) tseo ho leng bohloko ho li hlalosa kajeno
  • AI karabelo ea phallela: Ha likarolo tsa LLM-powered li fetoha tse tloaelehileng lithulusing tsa khoebo, ho phallela likarabo tsa token-by-token ho UI ke tebello ea mantlha - 'me ke mokhoa o phethahetseng oa ts'ebeliso bakeng sa liphetoho tsa ketane
  • Lits'ebetso tsa sehlopha: Ho sebetsana le meputso ea basebetsi ba likete, ho hlahisa li-invoice tse ngata, kapa ho amahanya lirekoto tsa CRM le litsamaiso tsa kantle, kaofela li kenyelletsa ho hasa litaba ka methati ea netefatso, phetoho, le methati ea tlhahiso
  • Lipeipi tsa Webhook: Ho kenya, ho netefatsa, ho tsamaisa, le ho lokisa diketsahalo tse kenang tsa webhook tse tsoang ho kopanyo ea batho ba bang ke mosebetsi o le mong oa ho phallela

Ke Eng Hantle-ntle e Nkoang Tlhahiso

JavaScript ecosystem e sebetsa maemong a mangata. Tlhahiso ea TC39 Iterator Helperse se e fihlile, e tlisa sebopeho se sebetsang ho li-synchronous iterators. Katoloso ea tlhaho — Async Iterator Helpers — e tla tlisa .map(), .filter(), .fokotsa(), .take(), le .flatMap() mekhoa ea ho async iterators, e seng e ntse e baloa [Symbol.asyncIterator]. Sena feela se ka ntlafatsa haholo boiphihlelo ba mohlahlami bakeng sa lipaterone tse atileng haholo tsa ho phallela.

Ka nqane ho TC39, lintlafatso tsa boemo ba nako ea ho sebetsa le tsona li sutumelletsa moeli. Deno e lekile lisebelisoa tse ngata tsa ergonomic stream. Lebokose la lisebelisoa tsa Web Streams le lilaebrari tsa sechaba tse tšoanang li fana ka mesebetsi e thusang e thatelang likarolo tsa verbose tsa API. 'Me ho na le ts'ebetso e ntseng e hola ka morao ho mohopolo oa laeborari e tloaelehileng ea stream-native - sete ea lisebelisoa tse hahelletsoeng, tse ntlafalitsoeng bakeng sa ts'ebetso e tloaelehileng ea ho hasanya joalo ka ho arola ha mela, JSON parsing, CSV process, le compression eo baetsi ba hajoale ba e hulang ho npm.

Ho boetse ho na le khang e matla bakeng sa semantics ea phoso e betere. Ho API ea kajeno, phoso ka ketane e nang le liphaephe e ka siea melapo libakeng tse sa hlakang - e jeoe hanyane, ka liloko tse leketlileng ho babali. API e ntlafalitsoeng e ka sebelisa phatlalatso ea liphoso e hlophisitsoeng e ts'oanang le mofuta oa Rust Result kapa ea amohela kopano moo liphoso li phallang liphaepheng joalo ka litekanyetso, ho lumella methati e tlase ho sebetsana kapa ho hlaphoheloa ntle le ho roba ketane eohle. Sena se ka fetola ts'epahalo ea tlhahiso.

Hobaneng Sena se le Bohlokoa ho Feta Pele ka 2026

Litloaelo tse tharo tse feto-fetohang li etsa hore ho phallela API ergonomics ho potlake ho feta nakong efe kapa efe nalaneng ea JavaScript. Ntlha ea pele, edge computing - Cloudflare Workers, Vercel Edge Functions, Deno Deploy - e sebetsa tlas'a mohopolo o thata le lithibelo tsa CPU moo ho thibela likarabo kapa li-datasets kaofela ho sa sebetseng. Ho phallela ke eona feela khetho, 'me baetsi ba romellang tikolohong ena ba hloka API e sa ba loantšeng.

Ya bobedi, kopanyo ya AI e entse hore ho phallela ho shebane le mosebedisi. Ha mothusi oa AI a hlahisa karabelo, basebelisi ba lebelletse ho bona li-tokens li hlaha ka nako ea nnete, eseng ho emela karabo eohle ho buffer. Sethala se seng le se seng sa SaaS - ho tloha lits'ebetsong tsa ts'ebetso ea khoebo joalo ka Mewayz ho ea ho lisebelisoa tse ikemetseng tsa AI - joale li hloka ts'ebeliso e matla ea lehlakoreng la bareki. API ea hajoale e sebetsa molemong oa sena, empa boiphihlelo ba mohlahlami ba ho arola, ho fetola, le ho fana ka tlhahiso e pharalletseng ea AI e ka ba betere haholo ha o sebelisana le li-stream operators.

Ya boraro, full-stack JavaScripte bolela hore bahlahisi ba sebetsana le melapo ka mahlakoreng a mabedi a moedi wa netweke. Moenjineri a le mong a ka ngola molatsoana oa lehlakoreng la seva o sebetsanang le liphetho tsa lipotso tsa database, oa li tsamaisa ka phetoho, oa li romella e le karabelo ea HTTP, ebe o sebelisa molapo o tšoanang ho moreki ho fana ka UI e tsoelang pele. Ha API ea ho phallela e le thata, khohlano e utloahala karolong e 'ngoe le e 'ngoe ea stack.

Ho Tsoela Pele: Seo Bahlahisi ba ka se Etsang Kajeno

Ha puo e ntse e tsoela pele, ba ntlafatsang ha ba eme nako e telele. Maano a 'maloa a sebetsang a ka ntlafatsa boiphihlelo ba ho phallela mererong ea hajoale. Ho sebelisa lijenereithara tsa async e le mokhoa oa mantlha oa ho ngola - le ho li phuthela ka ReadableStream.from() moo nako ea ho sebetsa e e tšehetsang teng - e fana ka syntax e hloekileng ho feta taolo ea taolo ea matsoho. Lilaebrari tse kang it-pipe le streaming-iterables li fana ka lithuso tse ka khonang tse tlisang ketane e sebetsang ho li-async iterators kajeno.

Bakeng sa lihlopha tse ahang lits'ebetso tse sebelisang data haholo, ho tsetela molemong o mosesaane oa ts'ebeliso ea ka hare ho lefa meputso. E entsoeng hantle streamMap(), streamFilter(), le streamBatch() sete ya ditshebetso - e' ngoe le e 'ngoe e nka async iterable le ho khutlisetsa async iterable - e fana ka composability eo API e tloaelehileng e haellang, ntle le boima ba moralo o felletseng oa ho phallela. Ena ke mokhoa o lekanyang ho tloha ho li-prototypes tsa ho qala ho ea ho li-platform tse sebetsanang le limilione tsa ts'ebetso.

  1. Amohela lijenereithara tsa async joalo ka mokhoa oa hau oa kamehla oa ho hlahisa litaba tsa ho phallela — li hloekile, li lekoa haholoanyane, 'me li sebetsa ho feta kaho ea ReadableStream
  2. Sebelisa ReadableStream.from() ho kopanya lintho tse async lefatšeng la marang-rang ha u hloka ho sebelisana le li-API tse lebelletseng maemo a ReadableStream
  3. Haha kapa u sebelise lisebelisoa tse tšesaane bakeng sa ts'ebetso e tloaelehileng ('mapa, filthara, batch, throttle) holim'a lintho tse sa tšoaneng ho e-na le ho haha ​​lisebelisoa tsa TransformStream
  4. Abuelli ho TC39 le lipuisano tsa nako ea tšebetso — tlhahiso ea bathusi ba async e hloka mantsoe a bahlahisi a hatellang ho etelletsoa pele
  5. Ngola liteko khahlano le li-async iterables, eseng melapo ka kotloloho — sena se etsa hore mohopolo oa hau oa ho phallela o be bonolo ho o netefatsa

JavaScript Streams API e ne e le motheo o hlokahalang. Empa metheo e reretsoe ho hahuoa holim'a eona, 'me karolo e latelang ea ho tlosoa - e etsang hore phallo e phalle e le ea tlhaho joalo ka ho sebetsa ka li-arrays - e siiloe ke nako. Likarolo li teng: li-async iterators, mesebetsi ea jenereithara, le mohlala oa bathusi ba iterator. Se hlokahalang hona joale ke boitlamo bo kopanetsoeng ba ho li kopanya ho ba maemo a lumellanang le kamoo bahlahisi ba hlileng ba nahanang ka datha tse latellanang. Sephetho e ke ke ea e-ba feela API e molemonyana - e tla bula ho phallela e le mokhoa oa kamehla ho e-na le mokhoa oa ho qetela, ho etsa hore lits'ebetso li potlake, li boloke mohopolo, 'me li be monate ho li haha.

Lipotso Tse Botsoang Hangata

Phoso ke efe ka JavaScript Streams API ea hajoale?

The current Streams API e na le boilerplate e feteletseng, semantics e ferekanyang ea backpressure, le sebaka se rarahaneng sa API se nyahamisang ho adoptha. Mesebetsi e bonolo joalo ka ho bala faele kapa ho sebetsana le karabo ea HTTP e hloka khoutu e ngata ho feta kamoo ho hlokahalang. Hangata ba ntlafatsang ba sebelisa lilaebrari tsa batho ba bang kapa mekhoa ea khale joalo ka li-callback le li-emitter tsa liketsahalo, ba tlola maemo ho hang hobane ergonomics e ikutloa e le haufi le Java ea khoebo ho feta JavaScript ea sejoale-joale.

API e betere ea Streams e ka ntlafatsa ntlafatso ea tepo joang?

API e hlophisitsoeng bocha ea Streams e nang le syntax e hloekileng, ts'ehetso ea async e hahelletsoeng, le mekhoa e hlakileng ea ho qapa e ka nolofatsa ts'ebetso ea data ka nako ea nnete. Bahlahisi ba ne ba ka kopanya liphetoho ka tlhaho, ba sebetsana le khatello ea maikutlo ka mokhoa o hlakileng, 'me ba ngola liphaephe tsa ho phallela ka karoloana ea khoutu. Sena se tla etsa hore phepelo e tsoelang pele, phepelo ea data e phelang, le ts'ebetso e kholo ea lifaele li fihlellehe ho moetsi e mong le e mong oa JavaScript, eseng feela ba ikemiselitseng ho loana le maemo a tlase.

Na lipolanete tsa sejoale-joale tsa khoebo li khona ho tsamaisa litaba tsa nako ea nnete ka nepo?

Ee — sethala se joalo ka Mewayz, khoebo ea li-module tse 207 e qalang ho $19/mo, e se e ntse e ntlafatsa liphaephe tsa datha tsa morao-rao bakeng sa litlhahlobo, li-automation workflows, le litlaleho tse etsahalang. Ha maemo a ho hasanya a ntse a ntlafala ho JavaScript, lisebelisoa tse hahiloeng holim'a marang-rang li tla fana ka liphihlelo tsa nako ea sebele tse potlakileng, ho tloha ho lintlafatso tsa hang-hang tsa dashboard ho ea ho ts'ebetso ea lifaele tse seamless ho pholletsa le mekhoa e kopanetsoeng ea khoebo.

Ke mekhoa efe e meng e teng ha Streams API e ntse e tsoela pele?

Hajoale ba ntlafatsa ba tšepile lilaeborari tse kang Node.js streams, RxJS bakeng sa mananeo a sebetsang, kapa lijenereithara tsa async tse kopantsoeng le li-loops tse letetsoeng ho sebetsana le lintlha tse latellanang ka mokhoa o hlophisehileng haholoanyane. Li-polyfill tse tsamaisanang le webo le bathusi ba sethala ba boetse ba koala likheo ho API e tloaelehileng. Ntho ea bohlokoa ke ho khetha likhutšoane tse tsamaellanang le ts'ebeliso ea hau - ho sa tsotellehe hore na seo se bolela mekhoa e hlokomelehang bakeng sa lits'ebetso tse boima ba liketsahalo kapa mokhoa o bonolo oa async bakeng sa mesebetsi e otlolohileng ea ho fetola data.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

POS & Payments Guide →

Accept payments anywhere: POS terminals, online checkout, multi-currency, and real-time inventory sync.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime