Hacker News

E mafai ona maua se API vaitafe sili atu mo le JavaScript

Fa'amatalaga

19 min read Via blog.cloudflare.com

Mewayz Team

Editorial Team

Hacker News

O le JavaScript's Streams API E i ai se Fa'afitauli - Ma o le a iu lava ina talanoa le au atiaʻe

Afai na e taumafai e fa'aoga le Streams APIi le JavaScript mo so'o se mea i tua atu o se fa'ata'ita'iga tusi, ua e lagona le fete'ena'i. O le a le mea e tatau ona avea ma se mea matagofie, faʻapipiʻi faʻapipiʻi mo le faʻaogaina o faʻamaumauga faʻasolosolo - faitau faila, faʻagaioiina o tali HTTP, suiga o faʻamaumauga i le taimi moni - e masani ona oʻo atu i totonu o le verbose boilerplate, fenumiai backpressure semantics, ma se API e sili atu le lagona e pei o le atinaʻe Java nai lo le JavaScript faʻaonapo nei. O le talanoaga e uiga i le fausiaina o se mea e sili atu ona lelei le tafe mai o loʻo faʻapipiʻiina i talosaga TC39, faʻatalanoaga faʻavae, ma galuega faʻalauiloa mo le tele o tausaga. I le 2026, o loʻo oʻo atu i se tulaga faʻafefe. E le o le fesili pe mafai ona maua se API e sili atu - ae o le a le "sili atu" foliga moni, ma le mea o loʻo taofia ai i matou.

Le mea e Pa'u ai le Vaitafe o le taimi nei API Puupuu

O le WHATWG Streams Standard, lea e fa'amalosia ai le ReadableStream, WritableStream, ma leTransformStreami luga o su'esu'ega ma ta'aloga e pei o Node.js ma Deno, o se fa'ainisinia moni. Na aumaia ai le backpressure, faalēaogāina, ma le async i le faʻaogaina o faʻamatalaga i luga ole laiga. Ae i le faʻatinoga, o le API e fesili tele i le atinaʻe mo galuega masani. O le fa'atupuina o se fa'aliliuga faigofie e mana'omia ai le fa'anatinatiina o se TransformStream fa'atasi ai ma se transform metotia, fa'atonutonuina o mea e fa'atonutonu ai, ma fa'ata'ita'iina ma le fa'aeteete semantics - o mea uma e fa'atatau i se map() i luga o pusi.

Fa'atusatusa lea i le auala e galulue ai le au atia'e ma fa'asologa. Array.prototype.map(), filter(), ma reduce() e mafai ona fatuina, faitau, ma e toeitiiti lava leai se sauniga. O le Streams API e leai se tasi o lenei ergonomic composability mai le pusa. Ole paipa fa'atasi e ala i le .pipeThrough() e aoga, ae o le fausiaina o le suiga lava ia o le mea lea e le maua ai e le au atina'e itula ma le onosai. O le sese o le taulimaina o filifili paipa o le isi lea itu tiga - e le fa'asalalauina fa'aletonu mea sese, ma o le fa'apipi'iina o se paipa gau e masani lava ona fa'apipi'i suiga le tumau e fa'amauina e tau iloa po'o fea o lo'o lafoa'i pe fa'aleagaina ai fa'amaumauga.

O lo'o iai fo'i le elefane Node.js i totonu o le potu. O le Node o loʻo i ai lana lava talatuu faʻatinoina o le vaitafe (stream.Readable, stream.Writable), lea e muamua atu i le WHATWG standard i le toeitiiti atoa le sefulu tausaga. O faiga e lua e fesoʻotaʻi naʻo mea faʻaoga faʻaoga, ma o le tele o npm afifi o loʻo faʻaogaina pea le API tuai. O tagata atia'e o lo'o galulue i si'osi'omaga - fa'aliliuga i le 'au'aumau, fa'agaoioiga pito, fa'agaioiga e fa'atatau i su'esu'ega - e fa'amalosia e fa'atauva'a ni fa'amatalaga se lua e le fetaui mo le manatu lava e tasi.

Ma'eu le Lelei o Vaitafe API e ono Fa'atusa

O le tele o talosaga ma fa'ata'ita'iga a le nu'u e fa'asino atu i se lumana'i e sili atu ona fa'alelei. O manatu autu o loʻo faʻaauau pea ona faʻafesoʻotaʻi i luga o ni nai faʻavae: faʻatulagaina galuega, async iterator alignment, ma lefaʻaititia le boilerplate. Va'ai faalemafaufau i le mafai ona tusi fa'asolo laina paipa fa'amatalaga e pei ona masani ai a'o e tusia suiga o lalaga - filifili .map(), .filter(), ma le .take() tuusa'o i luga o se vaitafe e mafai ona faitau e aunoa ma le mana'omia e fausia ai ni mea fa'atatau TransformStream.

E le o se manatu fa'apea. Le Iterator Helpers proposal (lea ua i le Stage 4 i le TC39) ua uma ona aumaia .map(), .filter(), .take(), .drop(), and .flatMap() to synchronous iterators. O le fa'alauteleina o lenei fa'ata'ita'iga i async iterator - ma fa'alautele, i vaitafe e mafai ona fa'aalia e fa'aalia [Symbol.asyncIterator] - o se la'asaga masani e sosoo ai. O nisi taimi ta'avale ma faletusi ua amata ona fa'ata'ita'i i lenei faiga, fa'ataga ai tagata atia'e e tusi fa'ailoga pei o:

O le mea e sili ona mamana fa'asao fa'asao o se tasi e mou atu. A mafai e le au atiaʻe ona faʻaalia suiga o faʻamatalaga e avea o se filifili o galuega faigofie - e aunoa ma le popole e uiga i le faʻatonutonuina, faʻasologa o taʻiala, poʻo le toe faʻaleleia o le tusi - latou te fausia vave, faʻaitiitia le faʻafefe, ma fiafia moni e galulue i faʻasalalauga faʻamaumauga.

O le fa'amoemoe e le o le suitulaga atoa o Streams API. O le a iai pea fa'aoga mataupu - fa'aleaganu'u fa'aleaganu'u, fa'atonuga lelei o mafaufauga, fa'atinoga codec binary - e mana'omia ai le fa'aogaina sa'o o le pule. Ae mo le 90% o fa'aoga fa'aogae aofia ai le faitau, suia, ma le tusiaina o fa'amaumauga fa'asolosolo, e tatau ona fetaui le fa'aputuga fa'apitoa ma le faigofie o le galuega.

A'oa'oga Mai Isi Fa'anatura

O le JavaScript e le'o le gagana muamua lea e fagatua ma le fa'agaioia ergonomics. Rust'sIteratorma ​​leStreamuiga e ofoina atu ai se fa'aputuga, leai se tau e fa'ataga ai le au atina'e fa'asologa o gaioiga e aunoa ma le tu'uina atu o fa'aputuga vaeluaga. O le Elixir'sStreammodule e tuʻuina atu ai le faʻasologa o le paie ma se faʻaoga mama, faʻafeiloaʻi paipa. E oo lava ia Java, e masani ona faitioina ona o upu, na faʻafeiloaʻi java.util.stream.Stream i le Java 8 faʻatasi ai ma se API lelei e iloa ma matauʻa e le au atinaʻe JavaScript.

O le mea o lo'o fa'asoaina e nei fa'alapotopotoga fa'anatura o se ta'utinoga i lefa'afaigata le mataupu masani. O le faitauina o se faila, fa'amama laina, ma le tusiaina o fa'ai'uga e mana'omia ai le 3-5 laina o le code composable. I le JavaScript's Streams API o loʻo iai nei, o le gaioiga lava lea e tasi e mafai ona faʻalauteleina i laina 20-30 pe a e faʻamauina mo le fausiaina o vaitafe, faʻaogaina o mea sese, ma le saʻo saʻo. O le va e le fa'atatau i le agava'a - ae fa'atatau i ergonomics.

O le auala a le Python e aoga foi. O galuega fa'atupu fa'atasi ma iuga e maua ai se auala fa'anatura e gaosia ma fa'aaoga fa'asolosolo fa'amaumauga ma le paie. O le JavaScript e iai fo'i galuega fa'aola, ae o le fa'afeso'ota'i i le Streams API e mana'omia ai le afifiina i totonu ReadableStream faufale fa'atasi ai ma fa'atonuga fa'avae toso. O le tu'ufa'atasiga sili atu i le va o afi afi ma alia - lea e mafai ona avea sa'o ai le galuega afi ma se vaitafe e mafai ona faitau - o le a fa'aumatia ai se vaega atoa o le fa'avela.

O le Aafiaga Moni a le Lalolagi i le Atinaʻeina o Talosaga

E le'o se popolega tau a'oa'oga. O fa'asalalauga fa'amaumauga o lo'o i le fatu o talosaga i luga ole laiga fa'aonaponei. Mea na lafo mai e le server, fa'aputuina tali HTTP, fa'asologa o su'esu'ega taimi moni, fa'agaioiga faila faila, fa'ata'ita'iga fa'ata'ita'iga a AI - o mea ia i aso uma, ae le o mata'upu. Pe a faigata ona fa'aoga le fa'agasolo muamua, e 'alo'ese 'ese'ese e le au atia'e (fa'asa'o mea uma i le manatua, e le fa'afuaina) po'o le fausia o ni paipa ma'ale'ale, faigata ona tausia e avea ma fa'apogai o fa'alavelave.

Mafaufau i le mea e tupu i le fua. O se fa'avae e pei o leMewayz, lea e fa'agasolo ai fa'amaumauga i luga o le 207 fa'apipi'i pisinisi modules - mai le CRM pipelines ma le fa'ailoga i le fa'atatauina o totogi ma le va'alele - e fa'atautaia le tele o voluma o fa'asologa fa'asologa i totonu. Fa'agaioiga auina atu i fafo, fa'atupu lipoti, fa'agaioiga o mea e tutupu i luga o le upega tafa'ilagi, ma fa'afouga fa'afouga o le dashboard i taimi moni uma e manuia uma mai le fa'agasolo lelei. Pe a fa'afaigata le fa'asalalauina o le gagana fa'avae, o le tau e fa'ateleina i vaega ta'itasi ma fa'amaumauga uma. E fa'amutaina e inisinia fa'apolokalame le fa'atupuina o fa'asalalauga fa'alotoifale i luga o fa'aupuga a le gagana, fa'aopoopoina le lavelave e le tatau ona mana'omia.

💡 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 →
  • Faiga o faila: O le fa'apipi'iina ma le fa'avasegaina o faila CSV i le 100K+ laina e mana'omia ai le fa'aoso ina ia 'alofia ai le vaivai o le mafaufau - ae o le API o lo'o iai nei e o'o lava i le fa'aliliuga o le laina-ma-laina verbose
  • Dashboards taimi moni: Fa'asalalauina fa'amatalaga au'ili'ili mai le server i le tagata o tausia e ala i le SSE po'o le WebSocket fa'amanuiaga mai suiga fa'aopoopo (fa'aopoopo, fa'amama, fa'amalo) e tiga e fa'aalia i aso nei
  • AI tali fa'asolo: A'o fa'atumauina tulaga fa'a LLM i meafaigāluega fa'apisinisi, fa'asolo mai tali fa'ailoga i le UI o se fa'amoemoega fa'avae - ma o se fa'aoga lelei atoatoa mo suiga o vaitafe e mafai ona filifili
  • Fa'agaoioiga fa'aputuga: Fa'agaioiina totogi mo le faitau afe o tagata faigaluega, fa'atupuina o pili tetele, po'o le fa'amaopoopoina o fa'amaumauga a le CRM ma faiga i fafo e aofia uma ai le fa'asalalauina o fa'amaumauga e ala i le fa'amaoniaina, suiga, ma la'asaga o galuega faatino
  • Webhook pipelines: O le fa'aogaina, fa'amaonia, fa'aalalaina, ma le fa'agaioiina o mea o lo'o o'o mai i luga o le upega tafa'ilagi mai tu'ufa'atasiga a isi vaega, e masani lava o se fa'agasolo galuega

O le a le Mea Moni o lo'o Fautuaina

O lo'o fa'agasolo le si'osi'omaga o le JavaScript i le tele o itu. O le TC39 Fesoasoani Fesoasoaniua maeʻa ona tulaʻi mai, ua aumaia ai le faʻatulagaina o galuega i le synchronous iterators. O le fa'aopoopoga fa'anatura - Async Iterator Helpers - o le a aumaia le tutusa .map(), .filter(), .reduce(), .take(), ma .flatMap() method to async iterators, which readable streams. ua fa'atinoina. E na'o le pau lea o le a matua fa'aleleia atili ai le poto fa'atupu mo le tele o fa'ata'ita'iga masani.

I tua atu o le TC39, o fa'afouga fa'agasolo fa'agasolo o lo'o tuleia ai fo'i le tua'oi. Ua fa'ata'ita'i e Deno le tele o fa'aoga ergonomic stream utilities. O le Web Streams Toolboxma ​​faletusi fa'aalaute tutusa e maua ai galuega fesoasoani e afifi ai vaega verbose o le API. Ma o loʻo faʻatupulaʻia le malosi i tua atu o le manatu o le stream-native standard library - o se seti o mea faʻapipiʻi, faʻaoga lelei mo gaioiga masani faʻafefe e pei o le vaeluaina o laina, JSON parsing, CSV processing, ma le faʻamalosi lea e toso mai e le au atinaʻe mai le npm.

O lo'o iai fo'i se finauga fa'amalosi mo semantics sili atu le sese. I le API i aso nei, o se mea sese i se filifili paipa e mafai ona tuua ai vaitafe i setete le mautonu - o loʻo faʻaumatia se vaega, ma loka tautau i luga o le au faitau. E mafai e se API toe fa'afouina ona fa'aogaina le fa'asologa o mea sese e pei o le Rust's Result type po'o le fa'aaogaina o se fa'apotopotoga e tafe mai ai mea sese i le paipa e fai ma fa'atauga, e fa'atagaina ai vaega i lalo e taulima pe toe fa'aleleia mai ia mea e aunoa ma le motusia o le filifili atoa. Ole mea lea ole a suia mo le fa'atuatuaina ole gaosiga.

Aisea e Taua ai Lenei Nai lo Seisi i le 2026

Tolu fa'agasologa fe'avea'i ua fa'anatinati atili ai le fa'aosoina o ergonomics API i le taimi nei nai lo so'o se taimi i le tala fa'asolopito o JavaScript. Muamua,fa'aogaina o le pito- Cloudflare Workers, Vercel Edge Functions, Deno Deploy - fa'agaoioia i lalo o le manatua ma le fa'atapula'aina o le CPU lea e le mafai ai ona fa'aogaina tali uma po'o fa'amaumauga. E na'o le fa'asalalauina le filifiliga, ma e mana'omia e le au atia'e o lo'o fa'apipi'iina nei si'osi'omaga se API e le fa'afefe ai.

Lua, AI tu'ufa'atasia ua fa'aosoina ai le fa'asalalauina o se fa'aaliga e fa'asaga i tagata fa'aoga. A fa'atupuina e se fesoasoani AI se tali, e fa'amoemoe tagata fa'aoga e va'ai fa'ailoga fa'aalia i le taimi moni, ae le o le fa'atali mo le tali atoa i le pa'u. Soʻo se faʻavae SaaS - mai faiga faʻapisinisi e pei o Mewayz i mea faigaluega faʻapitoa AI - o loʻo manaʻomia nei le malosi o le faʻaogaina o vaitafe. O le API o lo'o i ai nei e aoga mo lenei mea, ae o le poto masani o le atina'e o le fa'avasegaina, fa'aliliuina, ma le fa'aliliuina o le fa'aogaina o le AI e mafai ona sili atu le lelei i le fa'aogaina o vaitafe.

Tolu, o le full-stack JavaScriptgaioiga o lona uiga o tagata atia'e o lo'o taulimaina vaitafe i itu uma e lua o le tuaoi o feso'otaiga. E mafai e se enisinia e to'atasi ona tusia se vaitafe i luga o le server e fa'agasolo ai fa'ai'uga o su'esu'ega fa'amaumauga, paipa i latou e ala i se suiga, tu'uina atu e pei o se tali HTTP pu'upu'u, ona fa'aaogaina lea o lea lava vaitafe i luga o le kalani e fa'asolo ai le UI. A fa'aletonu le fa'afefe o le API, e fa'alogoina lena fete'ena'iga i vaega ta'itasi o le fa'aputuga.

Alu i Luma: O Mea e Mafai Ona Faia e Tagata Atina'e i Aso Nei

A'o fa'atupuina le gagana, e le'o fa'atalitali le au atia'e. Ole tele o ta'iala fa'atino e mafai ona fa'aleleia atili ai le fa'agasologa o fa'ata'ita'iga i galuega fa'atino nei. Fa'aaogāina async generatorse fai ma fa'ata'ita'iga autu o le tu'ufa'atasiga - ma afifi i totonu ReadableStream.from()le mea e lagolagoina ai e le ta'avale - e maua ai se fa'asologa sili atu ona mama nai lo le fa'atonutonuina o le fa'atonuga tusi. O faletusi e pei o le it-pipema le streaming-iterables e ofoina atu fesoasoani e mafai ona fa'apipi'iina e aumaia ai le filifili fa'atino i le async iterators i aso nei.

Mo 'au o lo'o fausia ni fa'amatalaga fa'amautu fa'amaumauga, o le fa'afaigaluegaina o tupe i totonu o se fa'aoga manifinifi e fa'afefeteina i totonu e maua ai ni tufatufaga. O se seti streamMap(), streamFilter(), ma streamBatch() - e ave uma se async iterable ma toe fa'afo'i mai se async iterable - e maua ai le composability o le API masani e leai, e aunoa ma le mamafa o se fa'ava'a atoa. O le fa'ata'ita'iga lea e fa'afua mai i fa'ata'ita'iga fa'ata'ita'i i fa'avae e fa'atautaia ai le faitau miliona o galuega.

  1. Fa'aaoga generators async e fai ma au mamanu fa'aletonu mo le fa'againa o fa'amaumauga - e mama, sili atu ona fa'ata'ita'i, ma sili atu ona tu'ufa'atasi nai lo le tusi faitau ReadableStream fauaga
  2. Fa'aoga ReadableStream.from()e fa'afeso'ota'i ai async iterables i luga ole laiga i luga ole laiga ole lalolagi pe a e mana'omia se feso'ota'iga ma API e fa'amoemoeina ReadableStream instances
  3. Fausia pe fa'aaoga galuega fa'aoga manifinifimo galuega masani (fa'afanua, faamama, fa'aputuga, to'a) i luga o mea fa'aoga async nai lo le fauina o mea TransformStream
  4. Faufautua i le TC39 ma talanoaga taimi fa'atino — o le async iterator fesoasoani fesoasoani e mana'omia ni leo a le au atia'e e una'ia le fa'amuamua
  5. Tusi su'ega fa'asaga i async iterables, ae le o vaitafe sa'o - o le mea lea e mafai ai ona feavea'i ma fa'afaigofie le fa'amaoniaina o lau fa'agasolo.

O le JavaScript Streams API o se fa'avae tatau. Ae o faavae e tatau ona fausia i luga, ma o le isi vaega o le faʻaaogaina - o se tasi e faʻafefe ai le masani e pei o le galue ma faʻasologa - ua tuai. O loʻo i ai vaega: async iterators, generator functions, ma le faʻasologa fesoasoani fesoasoani. O le mea o lo'o mana'omia i le taimi nei o le tu'ufa'atasiga e tu'ufa'atasia i latou i se fa'ata'ita'iga e fetaui ma le auala e mafaufau ai tagata atia'e i fa'amaumauga fa'asolosolo. O le taunuuga o le a le na'o se API e sili atu - o le a tatalaina ai le faʻafefe o se mamanu faʻaletonu nai lo le mea mulimuli, faʻavaveina ai talosaga, sili atu ona manatua lelei, ma sili atu ona manaia le fausiaina.

Fesili e Fai soo

O le a le mea o lo'o fa'aletonu i le JavaScript Streams API o lo'o iai nei?

O le Streams API o lo'o i ai nei o lo'o pagatia i le tele o fa'avela, fa'afememea'i fa'aupuga fa'afoma'i, ma se API lavelave tele e fa'avaivaia ai le vaetamaina. O galuega faigofie e pei o le faitauina o se faila poʻo le faʻaogaina o se tali HTTP e manaʻomia ai le tele o code nai lo le manaʻomia. E masani ona fa'aoga e le au atia'e faletusi isi vaega po'o mamanu tuai e pei o toe fo'i mai ma mea e fa'aosoina ai mea e tutupu, e fa'asolo atoa ai le fa'ata'ita'iga ona e sili atu ona latalata le ergonomics ile atina'e Java nai lo le JavaScript fa'aonaponei.

E fa'afefea ona fa'aleleia e le Streams API le atina'eina o upegatafa'ilagi?

O se API ua toe fa'avasegaina ma fa'amama le fa'asologa, fa'apipi'i i totonu o le async lagolago fa'aopoopo, ma auala fa'atupu fa'ata'ita'i e fa'afaigofie tele le fa'agaioia o fa'amaumauga i taimi moni. E mafai e tagata atiaʻe ona filifili suiga faʻanatura, faʻatautaia manino le backpressure, ma tusi laina paipa i se vaega o le code. O le a mafai ai ona fa'agasolo le fa'aliliuga, fafaga fa'amatalaga tu'usa'o, ma fa'agaioiga faila tetele e mafai ona maua e so'o se tagata e fa'atupu le JavaScript, ae le na'o i latou e naunau e fagatua ma fa'atauga maualalo.

E mafai e pisinisi fa'aonaponei fa'aonaponei ona fa'atautaia fa'amatalaga fa'aola fa'aola lelei?

Ioe - fa'avae e pei o Mewayz, o se 207-module pisinisi OS e amata i le $19/mo, ua uma ona fa'aogaina laina paipa fa'amaumauga i tua atu o va'aiga mo au'ili'iliga, faiga fa'aautomatika, ma fa'asalalauga ola. A'o fa'aleleia tulaga fa'asolo i le JavaScript, o meafaigaluega e fausia i luga o le upega tafa'ilagi o le a fa'ao'o vave atu ai fa'amatalaga fa'a-taimi, mai fa'afouga vave o le dashboard i le fa'agaoioiga o faila faila i vaega fa'apisinisi tu'ufa'atasia.

O a isi mea o lo'o iai a'o fa'asolosolo le Streams API?

O lo'o fa'alagolago nei le au atia'e i faletusi e pei o Node.js streams, RxJS mo polokalame fa'agaoioiga, po'o afi fa'a-async o lo'o fa'apipi'i fa'atasi ma fa'atalitali-o matasele e taulimaina fa'asologa fa'asologa o fa'amatalaga e sili atu le ergonomically. Polyfills talafeagai i luga o le upega tafaʻilagi ma fesoasoani-laasaga fesoasoani e faʻapipiʻi avanoa i le API masani. O le ki o le filifilia lea o fa'aupuga e fetaui ma lau fa'aoga - pe o lona uiga o fa'ata'ita'iga e mata'ituina mo fa'atonuga mamafa po'o le fa'aogaina faigofie mo galuega fa'aliliu sa'o.