Hacker News

Ka taea te API awa pai ake mo JavaScript

Nga korero

18 min read Via blog.cloudflare.com

Mewayz Team

Editorial Team

Hacker News

He Raruraru te API o nga awa o JavaScript — A, ka mutu te korero a nga Kaiwhakawhanake

Mena kua ngana koe ki te whakamahi i te Streams API i roto i te JavaScript mo tetahi mea i tua atu i te tauira pukapuka pukapuka, kua rongo koe i te waku. He aha te mea he tangohanga huatau, tito mo te whakahaere i nga raraunga raupapa - te panui i nga konae, te tukatuka i nga whakautu HTTP, te huri i nga huingararaunga i te waa tuuturu - he maha nga wa ka huri ki roto i te kohao verbose, te whakaraerae i nga rerenga korero whakamuri, me te mata API e rite ana ki te hinonga Java i te JavaScript hou. Ko nga korero mo te hanga i tetahi kaupapa rerema pai ake i roto i nga tono TC39, nga korerorero anga, me nga kaupapa tuwhera-puna mo nga tau. I te tau 2026, kua eke ki te taumata whakahirahira. Ko te patai ehara i te mea ka taea he API awa pai ake — he aha te ahua o te "pai ake", he aha te mea e mau ana i a matou.

Kei te wa poto te API awa o naianei

Ko te WHATWG Streams Standard, e whakakaha ana i ReadableStream, WritableStream, me TransformStream puta noa i nga kaitirotiro me nga wa whakahaere pera i a Node.js me Deno, he tino tutukinga miihini. I kawea mai te whakamuri, te whakakore, me te tukutahi ki te whakahaere raraunga taketake. Engari i roto i te mahi, he nui rawa te tono a te API ki te kaiwhakawhanake mo nga mahi noa. Ko te hanga i tetahi awa huringa ngawari me whakauru he TransformStream me te tikanga transform, te whakahaere i nga kaiwhakahaere, me te ata whakahaere i nga rerenga korero - he aha te nui o te map() ki runga ake i nga wahanga.

Whakatauritea tenei ki te mahi a nga kaiwhakawhanake me nga huānga. Array.prototype.map(), filter(), and reduce() he tito, he panui, me te tata ki te kore hui. Ko te Streams API karekau tetahi o tenei tito ergonomic mai i te pouaka. Ka mahi tahi te paipa paipa ma te .pipeThrough(), engari ko te hanga i nga waahanga huringa ka ngaro nga haora me te manawanui o nga kaihanga. Ko te hapa o te whakahaere i nga mekameka paipa tetahi atu tohu mamae — kare nga hapa e toha marie, a ko te patuiro i te paipa pakaru ko te tikanga ko te whakauru i nga huringa takiuru rangitahi kia mohio ai kei hea nga raraunga ka heke, ka kino ranei.

Kei reira ano te arewhana Node.js i roto i te ruuma. Kei a Node tana ake whakatinanatanga awa tuku iho (stream.Readable, stream.Writable), i mua i te paerewa WHATWG tata ki te tekau tau. Ko nga punaha e rua ka hono noa ma nga taputapu urutau, a he maha nga kohinga npm kei te whakamahi tonu i te API tawhito. Ko nga kaiwhakawhanake e mahi ana puta noa i nga taiao — te whakaputa taha-tumau, nga mahi taha, te tukatuka i runga i te kaitirotiro — ka kaha ki te tarai i nga tangohanga hotokore e rua mo te kaupapa kotahi.

He aha te ahua o te API awa pai ake

He maha nga tono me nga whakamatautau hapori e tohu ana ki te pai ake o te kaiwhakawhanake. Ko nga whakaaro matua kei te hono tonu ki runga i etahi maapono:te titonga mahi, whakariterite i te tukurua async, me tewhakaitihia te pereti kōhua. Whakaarohia ka taea e koe te tuhi i nga raina paipa raraunga roma i a koe e tuhi ana i nga huringa hurangi — te mekameka .map(), .filter(), me te .take() tika ki runga i te awa ka taea te panui me te kore e hiahia ki te hanga i nga ahanoa TransformStream takawaenga.

Ehara tenei i te whakapae. Ko te tono Iterator Helpers (kei te Wāhanga 4 i te TC39) kua mauria mai .map(), .filter(), .take(), .drop(), and .flatMap() to synchronous iterators. Ko te whakaroa atu i tenei tauira ki te tukutahi iterators — me te toronga, ki nga awa ka taea te panui e whakaatu ana [Symbol.asyncIterator] — he mahi a muri ake nei. Kua timata etahi o nga wa whakahaere me nga whare pukapuka ki te whakamatau i tenei huarahi, ka tuku i nga kaiwhakawhanake ki te tuhi waehere penei:

Ko te tangohanga rerema tino kaha ko tetahi ka ngaro. Ina taea e nga kaiwhakawhanake te whakaatu i nga huringa raraunga hei mekameka o nga mahi ngawari - me te kore e awangawanga mo nga kaiwhakahaere, nga rautaki tutira, te pehanga a-ringa ranei - ka tere ake te hanga, ka iti ake nga pepeke, ka tino pai ki te mahi me nga raraunga rere.

Ko te whainga ehara i te whakakapi katoa i te API Streams taumata-iti. Ka noho tonu nga keehi - nga tikanga ritenga, te mana mahara pai, te whakatinanatanga waehere rua - he mea nui te uru atu a te kaiwhakahaere. Engari mo te 90% o nga keehi whakamahie whai waahi ana ki te panui, te huri, me te tuhi i nga raraunga raupapa, me taurite te paparanga tangohanga ki te ngawari o te mahi.

Nga Akoranga Mai i etahi atu Rauwiringa Kaiao

Ehara a JavaScript i te reo tuatahi ki te mamau ki te rere o te ergonomics. Ko nga ahuatanga Iteratorme teStreama Rust he tangohanga tito, kore utu e taea ai e nga kaiwhakawhanake nga mahi mekameka me te kore e tohatoha i nga kohinga takawaenga. Ko te kōwaeStreama Elixir e whakarato ana i te tatau mangere me te wetereo ma, paipa paipa. Ahakoa ko Java, he maha nga whakahee mo te kupu, i whakaurua java.util.stream.Stream ki Java 8 me te API matatau ka mohio nga kaiwhakawhanake JavaScript me te hae.

Ko ta enei puunaha rauwiringa kaiao he whakapumautanga ki te whakaitihia te take noa. Ko te panui i tetahi konae, te tātari raina, me te tuhi i nga hua ka 3-5 nga rarangi o te waehere tito. I roto i nga Streams API o naianei a JavaScript, ka taea e te mahi kotahi te toro atu ki te 20-30 rarangi ina whakaaro koe mo te hanga awa, te whakahaere hapa, me te tarai tika. Ehara i te mea mo te kaha — e pa ana ki te ergonomics.

He tohutohu ano te huarahi a Python. Ko nga mahi a te Kaihanga me te hua he huarahi taiao ki te whakaputa me te pau i nga raraunga raupapa ma te mangere. Kei a JavaScript ano nga mahi whakangao, engari ma te hono atu ki te Streams API me takai ki roto ReadableStream kaihanga me nga kaiwhakahaere kumea. Ma te kaha ake o te whakakotahitanga i waenga i nga kaihanga me nga awa - ka taea te hanga i tetahi mahi whakaputa hei awa ka taea te panui - ka whakakorea te katoa o nga waahanga o te paraharaha.

Ko te Paanga Tuturu o te Ao ki te Whanaketanga Taupānga

Ehara tenei i te awangawanga matauranga. Ko te rerenga raraunga kei te ngakau o nga tono tukutuku hou. Ko nga huihuinga i tukuna mai e te tūmau, nga whakautu HTTP titongia, nga papatohu tātaritanga mo te wa-tūturu, te tukatuka tukunga kōnae, te rerema putanga tauira AI - he ahuatanga o ia ra, ehara i nga keehi taha. Ina he uaua ki te whakamahi i te roma tuatahi, ka karohia katoatia e nga kaiwhakawhanake (ka whakapuru i nga mea katoa ki roto i te mahara, kare e tauine) ka hanga ranei i nga raina paipa ngoikore, uaua ki te pupuri ka waiho hei puna o nga maiki whakangao.

Whakaarohia te aha ka tupu i te tauine. He tüäpapa pënei i te Mewayz, e tukatuka ana i nga raraunga puta noa i te 207 nga waahanga pakihi whakauru - mai i nga raina paipa CRM me te nama ki nga tatauranga utu me te tirotiro waka - ka mau i nga pukapuka maha o nga raraunga raupapa o roto. Ko nga mahi kaweake, te whakaputa purongo, te tukatuka takahanga webhook, me nga whakahoutanga papatohu-waahi ka whai hua katoa mai i te rere pai. I te wa e uaua ana te rere o te reo taketake, ka piki te utu puta noa i ia waahanga me ia rerenga raraunga. Ka mutu ka hangaia e nga miihini papaaho nga tangohanga roma o roto ki runga ake o nga tangohanga o te reo, me te taapiri i te uaua kaore e tika.

💡 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 →
  • Tukatuka kōnae: Ko te tukuake me te poroporo i nga konae CSV me te 100K+ rarangi me rere kia kore ai e pau te mahara — engari ko te API o naianei ka hanga i nga kupu whakarereke haupae-a-rarangi taketake
  • Nga papatohu wa-tūturu: Rere ana i nga raraunga tātaritanga mai i te tūmau ki te kiritaki mā te SSE, WebSocket rānei ka whai hua mai i nga huringa tito (te whakahiato, te tātari, te tarai) he mamae ki te whakapuaki i tenei ra
  • Ko te rerenga urupare AI: I te mea ka eke nga ahuatanga LLM-powered hei paerewa i roto i nga taputapu pakihi, ko te whakawhiti i nga whakautu tohu-ma-tohu ki te UI he tumanakohanga turanga — me te take whakamahi tino pai mo nga huringa awa mekameka
  • Nga mahi puranga: Ko te tukatuka utu mo nga mano o nga kaimahi, te whakaputa nama nui, te tukutahi ranei i nga rekoata CRM me nga punaha o waho ka uru katoa nga raraunga ma te whakamanatanga, te huringa, me nga waahanga whakaputa
  • Raina paipa Tukutuku: Ko te whakauru, te whakamana, te ararere, me te tukatuka i nga takahanga webhook taumai mai i nga whakauru-tuatoru he kawenga mahi romaroma

He aha te mea e whakaarohia ana

Kei te neke te rauwiringa kaiao JavaScript ki nga waahi maha. Kua tau mai te tono TC39Kaiawhina Iterator, e kawe ana i te hanganga mahi ki nga kaitoro tukutahi. The natural extension — Async Iterator Helpers — would bring the same .map(), .filter(), .reduce(), .take(), and .flatMap() tikanga to async iterators, which readable streams a whakatinana kē. Ma tenei anake ka tino whakapai ake i te wheako kaiwhakawhanake mo nga tauira rerenga noa.

I tua atu i te TC39, kei te turaki ano nga mahi auaha taumata-whakahaere i te rohenga. Kua whakamatau a Deno ki etahi atu taputapu awa ergonomic. Ko tePouaka Utauta Rerenga Tukutukume nga whare pukapuka hapori rite e whakarato ana i nga mahi kaiawhina e takai ana i nga waahanga kupu o te API. A, kei te tipu haere te kaha i muri i te whakaaro o te whare pukapuka paerewa-maori — he huinga taputapu hanga-i roto, kua arotauhia mo nga mahi rerema noa penei i te wehewehe raina, te poroporo JSON, te tukatuka CSV, me te kōpeketanga ka tangohia e nga kaihanga mai i te npm.

He tohenga kaha ano mo he pai ake nga tohu tohu hapa. I roto i te API o tenei ra, he hapa i roto i te mekameka paipa ka waiho nga awa i roto i nga ahuatanga rangirua - kua pau tetahi waahanga, me nga raka tarewa i runga i nga kaipanui. Ka taea e te API kua whakahouhia te whakatōpū hapa hanganga rite ki te momo Hua a Rust, ka tango ranei i tetahi tikanga ka rere nga hapa i roto i te paipa hei uara, ka taea e nga waahanga o raro te hapai, te whakaora mai ranei me te kore e pakaru te mekameka katoa. Ka huri tenei mo te hanga pono.

He aha te mea nui ake i tenei i te tau 2026

E toru nga tikanga hurihanga e kaha ake ana te rere o te ergonomics API inaianei i nga wa katoa o te hitori o JavaScript. Tuatahi,te rorohiko mata — Cloudflare Workers, Vercel Edge Functions, Deno Deploy — e mahi ana i raro i te mahara tino me nga here PTM i reira karekau e taea te aukati i nga whakautu katoa, i nga huingararaunga ranei. Ko te roma anake te whiringa, a ko nga kaiwhakawhanake e hora ana ki enei taiao e hiahia ana ki te API e kore e whawhai.

Tuarua, Ko te whakauru AI kua hanga te roma hei ahuatanga e anga ana ki te kaiwhakamahi. I te wa e whakaputahia ana e tetahi kaiawhina AI he whakautu, ka tumanako nga kaiwhakamahi ka kite i nga tohu ka puta i te waa tuuturu, kaua e tatari mo te whakautu katoa ki te aukati. Ko ia turanga SaaS - mai i nga punaha whakahaere pakihi penei i a Mewayz ki nga taputapu AI tuuturu - kei te hiahia inaianei kia kaha te kohi awa-taha-kiritaki. Ko te API o naianei e mahi ana mo tenei, engari ko te wheako kaiwhakawhanake mo te poroporo, te huri, me te whakaputa i te putanga AI rere, ka tino pai ake me nga kaiwhakahaere awa tito.

Tuatoru, ko te kaupapa tāpae katoa JavaScript te tikanga kei te whakahaere nga kaiwhakawhanake i nga awa i nga taha e rua o te rohe whatunga. Ka taea e te miihini kotahi te tuhi i tetahi awa taha-tumau e tukatuka ana i nga hua uiuinga raraunga, paipa ki roto i te panonitanga, ka tukuna atu hei whakautu HTTP poroporoaki, katahi ka pau taua awa ki runga i te kiritaki ki te whakaputa UI ahu whakamua. Ina he rangirua te API rere, ka rongohia taua waku ki ia paparanga o te puranga.

Te Anga whakamua: He aha nga Kaihanga Ka taea te mahi i tenei ra

Ahakoa e whanake ana te reo, kare nga kaiwhakawhanake e noho tatari ana. He maha nga rautaki whaihua ka taea te whakapai ake i te wheako roma i roto i nga kaupapa o naianei. Ma te whakamahi i whakaputa async hei tauira kaituhi tuatahi — me te takai ki roto ReadableStream.from() kei reira te wa whakahaere e tautoko ana — e whakarato ana i te wetereo maamaa ake i te whakahaere a-ringa. Ko nga whare pukapuka penei i te it-pipe me te streaming-iterables e tuku ana i nga kaiawhina tito e kawe mai ana i nga mekameka mahi ki nga kaitoro tukutahi i enei ra.

Mo nga kapa e hanga ana i nga tono kaha-raraunga, ko te haumi i roto i te paparanga whaipainga roma angiangi o roto ka utua nga utu. He huinga mahi streamMap(), streamFilter(), me streamBatch() — ka mau ia tangata i te async iterable me te whakahoki mai i te async iterable — e whakarato ana i te tito i te kore o te API paerewa, kaore he taumaha o te anga roma katoa. Koinei te tauira e whakatauhia ana mai i nga tauira whakaoho ki nga papaaho e whakahaere ana i nga miriona mahi.

  1. Whakaarohia nga kaihanga tukutahi hei tauira taunoa koe mo te whakaputa i nga raraunga rerenga — he maamaa ake, he pai ake te whakamatautau, he pai ake te tito i te hanga ReadableStream a-ringa
  2. Whakamahia ReadableStream.from() ki te whakawhiti i nga iterable tukutahi ki te ao awa tukutuku ina hiahia koe ki te mahi tahi me nga API e tatari ana mo nga tauira ReadableStream
  3. Hangahia, tango ranei i nga mahi whaipainga angiangi mo nga mahi noa (mapi, tātari, puranga, katere) i runga i nga iterable tukutahi, kaua ki te hanga ahanoa TransformStream
  4. Te Kaitohutohu i roto i te TC39 me nga korerorero mo te wa whakahaere — ko te tono kaiawhina async iterator me nga reo kaiwhakawhanake e akiaki ana mo te kaupapa matua
  5. Tuhia nga whakamatautau ki nga iterable async, kaua e rere tika - na tenei ka kawe to arorau roma me te ngawari ki te whakamana

Ko te JavaScript Streams API he turanga tika. Engari ko nga turanga me hanga ki runga, a ko te paparanga o muri o te tangohanga - tetahi e hanga ana i te rere kia rite ki te mahi me nga raupapa - kua roa. Ko nga waahanga kei te waahi: nga kaitoro async, nga mahi whakaputa, me te tauira kaiawhina. Ko te mea e hiahiatia ana inaianei ko te hiahia o te roopu ki te whakahiato ki tetahi paerewa e rite ana ki te whakaaro o nga kaiwhakawhanake mo nga raraunga raupapa. Ehara i te mea he API pai ake te hua — ka wetewete i te rerenga hei tauira taunoa, kaua ko te huarahi whakamutunga, ka tere ake nga tono, ka pai ake te mahara, ka pai ake te hanga.

Patai Auau

He aha te he o te JavaScript Streams API o naianei?

Ko te Streams API o naianei e mate ana i te nui o te kohu, te whakamaaramatanga o te pehanga o muri, me te mata o te API tino uaua e kore ai te whakatamarikitanga. Ko nga mahi ngawari penei i te panui i te konae, te tukatuka ranei i te whakautu HTTP me nui ake te waehere i te mea e tika ana. He maha nga wa ka tahuri nga kaiwhakawhanake ki nga whare pukapuka tuatoru, ki nga tauira tawhito ranei penei i nga waea whakahoki me nga kaiwhakaputa takahanga, ma te takahi i te paerewa katoa na te mea he tata ake te ergonomics ki te hinonga Java i te JavaScript hou.

Me pehea e whakapai ake ai te Streams API i te whanaketanga paetukutuku?

Ko te API Streams kua hoahoatia ano me te wetereo pai ake, te tautoko whitiwhitinga tukutahi-a-roto, me nga tikanga titonga mohio ka tino whakangwarihia te tukatuka raraunga-waahi. Ka taea e nga kaiwhakawhanake te mekameka huri noa, te hapai i te pehanga o muri, me te tuhi i nga paipa rere ki roto i te hautanga o te waehere. Ma tenei ka taea e nga kaiwhakawhanake JavaScript te whakaputa haere, nga whangai raraunga ora, me te tukatuka konae nui ki nga kaiwhakawhanake JavaScript, kaua ko te hunga e pirangi ana ki te tohetohe me nga mea o mua.

Ka taea e nga tüäpapa pakihi hou te whakahaere tika i te rere raraunga wa-pono?

Ae — papaapapa penei i te Mewayz, he OS pakihi 207-waewae timata mai i te $19/mo, kua kaha ki te whakamahi i nga raina paipa raraunga pai i muri i nga tirohanga mo te tātaritanga, nga rerenga mahi aunoa, me nga purongo ora. I te pai ake o nga paerewa roma i roto i te JavaScript, ko nga taputapu i hangaia i runga i te taapu tukutuku ka tere ake nga wheako o te waa tuuturu, mai i nga whakahoutanga papatohu inamata ki te tukatuka konae pai puta noa i nga waahanga pakihi whakauru.

He aha nga momo rereke i te wa e tipu ana te Streams API?

I tenei wa ka whakawhirinaki nga kaiwhakawhanake ki nga whare pukapuka penei i nga awa Node.js, RxJS mo te hotaka hohekoheko, me nga kaihanga tukutahi ranei e honoa ana ki nga koropiko mo te tatari-tatari ki te hapai i nga raraunga raupapa i runga i te ergonomis. Ko nga polyfills hototahi-tukutuku me nga kaiawhina-waahanga tono-whakapiri hoki i nga waahi i roto i te API paerewa. Ko te mea nui ko te kowhiri i nga tangohanga e hono ana ki to keehi whakamahi — ahakoa he tauira ka kitea mo nga tono taumaha-takahanga, he whitiwhitinga tukutahi ngawari ranei mo nga mahi whakawhiti raraunga ngawari.