Hacker News

Tá API sruthanna níos fearr indéanta do JavaScript

Tuairimí

18 min read Via blog.cloudflare.com

Mewayz Team

Editorial Team

Hacker News

Tá Fadhb ag JavaScript's Streams API - Agus Faoi dheireadh Tá Forbróirí ag Labhairt Faoi

Má rinne tú iarracht riamh an Streams API a úsáid i JavaScript le haghaidh rud ar bith seachas sampla téacsleabhar, d'aithnigh tú an frithchuimilt. Rud ar cheart a bheith ina astarraingt galánta in-chomhchodach chun sonraí seicheamhach a láimhseáil - comhaid a léamh, freagraí HTTP a phróiseáil, tacair shonraí a athrú i bhfíor-am - is minic a chineann sé isteach i bpláta coire briathra, séimeantaic brú droma mearbhall, agus dromchla API a mhothaíonn níos mó cosúil le fiontair Java ná JavaScript nua-aimseartha. Tá an comhrá maidir le sruthú níos fearr primitive a thógáil ag suanbhruith i dtograí TC39, plé creata, agus tionscadail foinse oscailte le blianta anuas. In 2026, tá pointe tipping bainte amach aige. Ní í an cheist an bhfuil API sruthanna níos fearr indéanta - is é an chuma atá ar “níos fearr” i ndáiríre, agus cad atá á choinneáil siar againn.

I gcás ina dTiteann an API Current Streams Short

Ba fhíoréacht innealtóireachta é Caighdeán Sruthanna WHATWG, a chumhachtaíonn ReadableStream, WritableStream, agus TransformStream thar brabhsálaithe agus amanna rite ar nós Node.js agus Deno. Thug sé cúlbhrú, cealú, agus atriall asincréite do láimhseáil sonraí dúchasacha gréasáin. Ach go praiticiúil, iarrann an API an iomarca ar an bhforbróir le haghaidh oibríochtaí coitianta. Chun sruth claochlaithe simplí a chruthú ní mór TransformStream a chur ar an toirt le modh transform, rialtáin a bhainistiú, agus séimeantaic sruthlaithe a láimhseáil go cúramach - rud arb ionann é agus mapa() thar shleachta.

Cuir é seo i gcomparáid leis an gcaoi a n-oibríonn forbróirí le eagair. Tá Array.prototype.map(), scagaire(), agus laghdaigh() inchomhdhéanta, inléite, agus teastaíonn searmanas beagnach nialas uathu. Ní thairgeann an Streams API aon chuid den chomhdhéanta eirgeanamaíochta seo as an mbosca. Oibríonn sruthanna píobaireachta le chéile trí .pipeThrough(), ach is é tógáil na gcéimeanna claochlaithe iad féin nuair a chailleann forbróirí uaireanta agus foighne. Pointe pian eile is ea láimhseáil earráidí trasna slabhraí píopaithe – ní iomadaíonn earráidí go hintuigthe, agus is minic go gciallaíonn dífhabhtú píblíne briste go gcuirtear isteach an logáil shealadach a chlaochlú díreach le fáil amach cá bhfuil sonraí á scaoileadh nó truaillithe.

Tá eilifint Node.js sa seomra freisin. Tá a sruth oidhreachta féin ag Nód (stream.Readable, stream.Writable), a thagann beagnach deich mbliana roimh chaighdeán WHATWG. Níl an dá chóras idir-inoibritheach ach amháin trí fhóntais oiriúnaitheora, agus úsáideann go leor pacáistí npm an API níos sine fós. Cuirtear iallach ar fhorbróirí a oibríonn trasna timpeallachtaí — rindreáil ar thaobh an fhreastalaí, feidhmeanna ciumhais, próiseáil bunaithe ar bhrabhsálaí — dhá astarraingt nach bhfuil ag luí leis an gcoincheap céanna a roinnt.

Cén Cuma a d’fhéadfadh a bheith ar API Sruthanna Níos Fearr

Díríonn roinnt tograí agus turgnaimh phobail ar thodhchaí níos so-úsáidte don fhorbróir. Leanann na bunsmaointe le chéile ar roinnt prionsabal: comhdhéanamh feidhme, ailíniú iterator asincréite, agus pláta coire laghdaithe. Samhlaigh go bhfuil tú in ann píblínte sonraí sruthaithe a scríobh chomh nádúrtha agus a scríobhann tú claochluithe eagair — .map(), .filter(), agus .take() go díreach ar shruth inléite gan gá le réada TransformStream idirmheánach a thógáil.

Ní hipitéiseach é seo. Tugann an togra Iterator Helpers (atá anois ag Céim 4 in TC39) .map(), .filter(), .take(), .drop(), agus .flatMap() chuig iterators sioncronacha cheana féin. Is céim nádúrtha eile í an patrún seo a shíneadh chuig iterators asincréite — agus mar shíneadh, chuig sruthanna inléite a nochtar [Symbol.asyncIterator]. Tá tús curtha ag roinnt amanna rite agus leabharlanna ag triail leis an gcur chuige seo cheana féin, rud a ligeann d'fhorbróirí cód mar:

a scríobh
Is é an astarraingt sruthú is cumhachtaí ná ceann a imíonn. Nuair is féidir le forbróirí claochluithe sonraí a chur in iúl mar shlabhra feidhmeanna simplí - gan a bheith buartha faoi rialtóirí, straitéisí scuaine nó cúlbhrú láimhe - tógann siad níos tapúla, seoltar níos lú fabhtanna, agus baineann siad taitneamh as oibriú le sonraí a shruthú.

Ní hé an sprioc an API Sruthanna leibhéal íseal a athsholáthar go hiomlán. Beidh cásanna úsáide ann i gcónaí — prótacail shaincheaptha, rialú cuimhne mionghnéasach, feidhmiúcháin dhénártha codecs — ina bhfuil rochtain dhíreach ar rialtóirí riachtanach. Ach maidir leis na 90% de chásanna úsáide a bhaineann le léamh, claochlú agus scríobh sonraí seicheamhach, ba cheart go mbeadh an ciseal astarraingthe ag teacht le simplíocht an taisc.

Ceachtanna ó Éiceachóras Eile

Ní hé JavaScript an chéad teanga le dul i ngleic leis an eirgeanamaíocht sruthaithe. Tairgeann tréithe Iterator agus Srutha Rust astarraingt inchomhdhéanta nialasach a ligeann d’fhorbróirí oibríochtaí a shlabhra gan bailiúcháin idirmheánacha a leithdháileadh. Soláthraíonn modúl Sruth Elixir áireamhacht leisciúil le comhréir ghlan atá neamhdhíobhálach don phíb. Thug fiú Java, a cháintear go minic as briathrachas, java.util.stream.Stream isteach i Java 8 le API líofa a d’aithneodh forbróirí JavaScript agus a mbeadh éad orthu.

Is é atá i bpáirt leis na héiceachórais seo ná gealltanas an cás coiteann a dhéanamh fánach. Bíonn idir 3-5 líne de chód in-chomhdhéanta ag léamh comhaid, ag scagadh línte, agus ag scríobh torthaí. In API Sruthanna reatha JavaScript, is féidir leis an oibríocht chéanna a leathnú go héasca go 20-30 líne nuair a dhéanann tú cuntas ar thógáil srutha, láimhseáil earráidí, agus cuimilt síos ceart. Ní bhaineann an bhearna le cumas — baineann sé le eirgeanamaíocht.

Tá cur chuige Python oiliúnach freisin. Soláthraíonn feidhmeanna gineadóra le toradh bealach nádúrtha chun sonraí seicheamhacha a tháirgeadh agus a ithe go leisciúil. Tá feidhmeanna gineadóra ag JavaScript freisin, ach chun iad a nascadh leis an Streams API ní mór iad a fhilleadh i dtógálaithe ReadableStream le rialtóirí tarraingt-bhunaithe. Chuirfeadh comhtháthú níos déine idir gineadóirí agus sruthanna — áit a bhféadfadh feidhm ghineadóra a bheith ina sruth inléite go díreach — deireadh le catagóir iomlán de phláta coire.

An Tionchar Fíordhomhanda ar Fhorbairt Feidhmchlár

Ní ábhar imní acadúil é seo. Tá sruthú sonraí ag croílár na bhfeidhmchlár gréasáin nua-aimseartha. Imeachtaí a sheol an freastalaí, freagraí HTTP smuite, deais anailíse fíor-ama, próiseáil uaslódáil comhad, sruthú aschuir samhail AI - is gnéithe laethúla iad seo, ní cásanna imeallacha. Nuair is deacair an sruthú primitive a úsáid, seachnaíonn forbróirí é go hiomlán (ag maolánú gach rud i gcuimhne, nach ndéanann scála) nó tógann siad píblínte leochaileacha atá deacair a chothabháil a thagann chun bheith ina bhfoinse teagmhas táirgthe.

Déan machnamh ar cad a tharlaíonn ar scála. Láimhseálann ardán cosúil le Mewayz, a phróiseálann sonraí thar 207 modúl gnó comhtháite - ó phíblínte CRM agus sonraisc go ríomh párolla agus rianú cabhlaigh - méideanna ollmhóra sonraí seicheamhach go hinmheánach. Baineann oibríochtaí easpórtála, giniúint tuairiscí, próiseáil ócáidí cuaif gréasáin, agus nuashonruithe fíor-ama ar an bpainéal leas as sruthú éifeachtach. Nuair a dhéanann na primitives teanga bunúsacha sruth deacair, iolraíonn an costas ar fud gach modúl agus gach sreabhadh sonraí. Ar deireadh, déanann innealtóirí ardáin astarraingtí sruthaithe inmheánacha a thógáil de bhreis ar astarraingtí na teanga, ag cur castacht leis nár cheart a bheith riachtanach.

💡 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 →
  • Próiseáil comhad: Teastaíonn sruthú chun comhaid CSV a uaslódáil agus a pharsáil le sraitheanna 100K+ chun ídiú cuimhne a sheachaint - ach déanann an API reatha fiú bunathrú as a chéile mar bhriathar
  • Deiseanna fíor-ama: Má shruthaítear sonraí anailíse ó fhreastalaí go cliant trí SSE nó WebSocket, baineann sé leas as claochluithe in-chomhchodaithe (comhiomlánú, scagadh, sracfhéachaint) a bhfuil sé deacair iad a chur in iúl inniu
  • Sruthú freagartha AI: De réir mar a thagann gnéithe faoi thiomáint LLM chun bheith caighdeánach in uirlisí gnó, is ionchas bunlíne é freagairtí dearbhán ar chomharthaí don Chomhéadain a shruthú — agus cás úsáide foirfe chun sruth inchaingne a chlaochlú
  • Oibríochtaí baisc: Is éard atá i gceist le próiseáil párolla do na mílte fostaithe, ag giniúint bulc-sonraisc, nó ag sioncronú taifid CRM le córais sheachtracha ná sonraí a shruthú trí chéimeanna bailíochtaithe, claochlaithe agus aschuir
  • Píblínte Webhook: Is ualach oibre sruthaithe go bunúsach é imeachtaí cnuasaithe gréasáin isteach ó chomhtháthaithe tríú páirtí a ionghabháil, a bhailíochtú, a ródú agus a phróiseáil

Cad atá á Mholadh i ndáiríre

Tá an t-éiceachóras JavaScript ag bogadh ar aghaidheanna iolracha. Tá an togra TC39 Iterator Helpers tagtha i dtír cheana féin, rud a thugann comhdhéanamh feidhmiúil chuig atrialltóirí sioncrónacha. Thabharfadh an síneadh nádúrtha — Async Iterator Helpers - na modhanna céanna .map()(), .filter(), .reduce(), .take(), agus .flatMap() chun iterators a shioncronú, a chuireann sruthanna inléite i bhfeidhm trí sreafaí inléite trí bobola. Chuirfeadh sé seo go mór le taithí an fhorbróra do na patrúin sruthaithe is coitianta.

Thar TC39, tá nuálaíochtaí ag leibhéal ama rite ag brú na teorann freisin. Tá triail déanta ag Deno le níos mó fóntais srutha eirgeanamaíochta. Soláthraíonn an Bosca Uirlisí Gréasáin Sruthanna agus leabharlanna pobail comhchosúla feidhmeanna cúntóra a chumhdaíonn codanna briathra an API. Agus tá móiminteam ag dul i méid taobh thiar den smaoineamh do leabharlann caighdeánach sruth-dhúchasach - sraith d'fhóntais ionsuite, optamaithe le haghaidh oibríochtaí sruthaithe coitianta ar nós scoilteadh líne, parsáil JSON, próiseáil CSV, agus comhbhrú a tharraingíonn forbróirí ó npm faoi láthair.

Tá argóint an-láidir ann freisin ar son séimeantaic earráide níos fearr. In API an lae inniu, is féidir le hearráid i slabhra píopaithe sruthanna a fhágáil i stáit débhríoch - ídithe go páirteach, agus glasanna buailte ar léitheoirí. D’fhéadfadh API athbhreithnithe iomadú earráide struchtúrtha cosúil le cineál Result Rust a ghlacadh nó coinbhinsiún a ghlacadh ina sreabhann earráidí tríd an bpíblíne mar luachanna, ag ligean do chéimeanna iartheachtacha láimhseáil nó aisghabháil uathu gan an slabhra iomlán a bhriseadh. Bheadh sé seo bunathraithe maidir le hiontaofacht táirgeachta.

Cén Fáth a Bhfuil Sé Seo Níos Tábhachtach ná Riamh in 2026

Mar gheall ar thrí threocht inréimneach tá eirgeanamaíocht API sruthaithe níos práinní anois ná mar a bhí tráth ar bith i stair JavaScript. Ar an gcéad dul síos, feidhmíonn ríomhaireacht chiumhais - Oibrithe Cloudflare, Feidhmeanna Imeall Vercel, Deno Deploy - faoi shrianta diana cuimhne agus LAP nuair nach bhfuil sé indéanta freagraí iomlána nó tacair shonraí a mhaolánú. Is é sruthú an t-aon rogha, agus tá API ag teastáil ó fhorbróirí a imscartar chuig na timpeallachtaí seo nach bhfuil ag troid leo.

Sa dara háit, rinne comhtháthú AI sruthú mar ghné atá os comhair úsáideoirí. Nuair a ghineann cúntóir AI freagra, bíonn úsáideoirí ag súil go bhfeicfear comharthaí le feiceáil i bhfíor-am, gan fanacht leis an bhfreagra iomlán ar mhaolán. Tá tomhaltas láidir srutha ag teastáil ó gach ardán SaaS - ó chórais oibriúcháin gnó cosúil le Mewayz go huirlisí AI neamhspleácha - anois. Oibríonn an API reatha chuige seo, ach d’fhéadfadh taithí an fhorbróra ar pharsáil, claochlú, agus rindreáil aschuir AI sruthaithe a bheith i bhfad níos fearr le hoibreoirí sruthanna in-chomhdhéanta.

Ar an tríú dul síos, ciallaíonn an ghluaiseacht cruach-iomlán JavaScript go bhfuil forbróirí ag láimhseáil sruthanna ar an dá thaobh de theorainn an líonra. D’fhéadfadh innealtóir amháin sruth a scríobh ar thaobh an fhreastalaí a phróiseálann torthaí fiosrúcháin bhunachar sonraí, a phíopaí trí chlaochlú, a sheolann mar fhreagra HTTP smutánaithe, agus ansin a ídíonn an sruth céanna sin ar an gcliant chun UI forásach a sholáthar. Nuair a bhíonn an API sruthú corrach, mothaítear an frithchuimilt sin ag gach ciseal den chruach.

Ag Bogadh Ar Aghaidh: Cad Is Féidir le Forbróirí a Dhéanamh Inniu

Agus an teanga ag athrú, níl forbróirí i bhfostú ag fanacht. Is féidir le roinnt straitéisí praiticiúla an taithí sruthú i dtionscadail reatha a fheabhsú. Trí gineadóirí async a úsáid mar phríomhphatrún údaraithe — agus iad a chumhdach i ReadableStream.from() áit a dtacaíonn an t-am rite leis – soláthraíonn sé comhréir i bhfad níos glaine ná bainistíocht an rialaitheora láimhe. Cuireann leabharlanna ar nós it-pipe agus streaming-iterables cúntóirí in-ilchodacha ar fáil a thugann slabhraiú feidhmiúil chuig atriallta sioncronaithe inniu.

D’fhoirne atá ag tógáil feidhmchláir atá dian ar shonraí, íoctar díbhinní trí infheistíocht a dhéanamh i sraith tanaí fóntais sruthú inmheánach. Soláthraíonn sraith feidhmeanna dea-dheartha streamMap()(), streamFilter(), agus streamBatch() — gach ceann acu ag glacadh le hath-athráthaíocht asincréite agus ag tabhairt aisioncronáin iathraithe - an chomhoiriúnacht atá in easnamh ar an ngnáth-API, gan meáchan an chreata sruthaithe iomláin. Seo é an patrún a théann ó fhréamhshamhlacha tosaithe go hardáin a láimhseálann na milliúin oibríochtaí.

  1. Glac gineadóirí sioncronaithe mar do phatrún réamhshocraithe chun sonraí sruthaithe a tháirgeadh - tá siad níos glaine, níos intáladh agus níos compordaí ná tógáil de láimh ReadableStream
  2. Úsáid ReadableStream.from() chun míreanna athshioncronaithe a nascadh isteach i ndomhan na sruthanna Gréasáin nuair a bhíonn idirghníomhú ag teastáil uait le APIanna a bhfuiltear ag súil le cásanna InléiteStream
  3. Tóg nó glac feidhmeanna fóntais tanaí le haghaidh oibríochtaí coitianta (léarscáil, scagaire, baisce, scóig) thar rudaí inathraithe asyncronaithe seachas réada TransformStream a thógáil
  4. Abhcóide in TC39 agus i bpléití am rite - tá glórtha forbróra ag teastáil ón togra maidir le cúntóirí iterator async chun tosaíocht a thabhairt dó
  5. Scríobh tástálacha i gcoinne míreanna asyncronacha, ní sruthanna go díreach - déanann sé seo do loighic sruthú iniompartha agus níos fusa a bhailíochtú

Ba bhunsraith riachtanach é API JavaScript Streams. Ach tá sé i gceist tógáil ar bhunsraitheanna, agus tá an chéad sraith eile astarraingthe - ceann a fhágann go bhfuil sruthú chomh nádúrtha le hoibriú le eagair - thar téarma. Tá na píosaí i bhfeidhm: iterators async, feidhmeanna gineadóra, agus an patrún cúntóir atriator. Is é an rud atá ag teastáil anois ná an toil chomhchoiteann iad a chur le chéile i gcaighdeán a thagann leis an dóigh a smaoiníonn forbróirí ar shonraí seicheamhach. Ní hamháin gur API níos fearr a bheidh mar thoradh - díghlasálfaidh sé sruthú mar phatrún réamhshocraithe seachas mar rogha dheireanach, ag déanamh feidhmchláir níos tapúla, níos tíosaí ar chuimhne agus níos taitneamhaí le tógáil.

Ceisteanna Coitianta

Cad atá cearr leis an API JavaScript Streams faoi láthair?

Fulaingíonn an Streams API atá ann faoi láthair mar gheall ar an bpláta coire iomarcach, séimeantaice cúlbhrú mearbhall, agus dromchla API ró-chasta a dhíspreagann glacadh. Teastaíonn i bhfad níos mó cód ná mar is gá le tascanna simplí cosúil le comhad a léamh nó freagra HTTP a phróiseáil. Is minic a théann forbróirí i muinín leabharlanna tríú páirtí nó patrúin níos sine cosúil le aisghlaonna agus astaitheoirí imeachtaí, ag seachaint an chaighdeáin go hiomlán toisc go mbraitheann an eirgeanamaíocht níos gaire don ghnóthas Java ná JavaScript nua-aimseartha.

Conas a d'fheabhsódh API Streams níos fearr forbairt gréasáin?

Dhéanfadh API Sruthanna athdheartha le comhréir níos glaine, tacaíocht atriallta asincréite ionsuite, agus modhanna iomasach cumadóireachta próiseáil sonraí fíor-ama a shimpliú go mór. D'fhéadfadh forbróirí claochluithe a shlabhra go nádúrtha, backpressure a láimhseáil go trédhearcach, agus píblínte sruthú a scríobh i gcodán den chód. Dhéanfadh sé seo rindreáil fhorásach, fothaí sonraí beo, agus próiseáil comhad mór inrochtana do gach forbróir JavaScript, ní hamháin dóibh siúd atá sásta dul i ngleic le primitives ag leibhéal íseal.

An féidir le hardáin ghnó nua-aimseartha sruthú sonraí fíor-ama a láimhseáil go héifeachtach?

Sea - tá ardáin cosúil le Mewayz, OS gnó 207-modúl ag tosú ar $19/mo, cheana féin ag giaráil píblínte sonraí éifeachtacha taobh thiar de na cásanna le haghaidh anailíse, sreafaí oibre uathoibrithe, agus tuairisciú beo. De réir mar a thagann feabhas ar chaighdeáin sruthaithe i JavaScript, soláthrófar eispéiris fíor-ama níos tapúla fós le huirlisí a tógadh ar an stoc Gréasáin, ó nuashonruithe ar an deais ar an toirt go próiseáil comhad gan uaim thar modúil ghnó chomhtháite.

Cad iad na roghanna eile atá ann agus an Streams API ag athrú?

Tá forbróirí ag brath ar leabharlanna faoi láthair ar nós sruthanna Node.js, RxJS le haghaidh ríomhchlárú imoibríoch, nó gineadóirí async atá péireáilte le lúba ar feitheamh chun sonraí seicheamhach a láimhseáil ar bhealach níos eirgeanamaíochta. Déanann polyfills atá comhoiriúnach don ghréasán agus cúntóirí céim togra bearnaí a líonadh san API caighdeánach. Is é an rud is tábhachtaí ná astarraingtí a ailíníonn le do chás úsáide a roghnú — cibé acu an gciallaíonn sé sin patrúin inbhraite d’fheidhmchláir thromchúiseacha nó atriallta asincréite simplí le haghaidh tascanna claochlaithe sonraí simplí.