[{"data":1,"prerenderedAt":325},["ShallowReactive",2],{"navigation":3,"-concepts-concurrency-and-cancellation":65,"-concepts-concurrency-and-cancellation-surround":322},[4,15,29,47],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Omni Async","\u002Fguide","1.guide\u002F1.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-book-open",{"title":12,"path":13,"stem":14,"icon":10},"Quick start","\u002Fguide\u002Fquick-start","1.guide\u002F2.quick-start",{"title":16,"path":17,"stem":18,"children":19},"Async state","\u002Fconcepts","2.concepts\u002F1.index",[20,21,25],{"title":16,"path":17,"stem":18},{"title":22,"path":23,"stem":24},"Concurrency and cancellation","\u002Fconcepts\u002Fconcurrency-and-cancellation","2.concepts\u002F2.concurrency-and-cancellation",{"title":26,"path":27,"stem":28},"Notifications and equality","\u002Fconcepts\u002Fnotifications","2.concepts\u002F3.notifications",{"title":30,"path":31,"stem":32,"children":33},"Framework adapters","\u002Fframeworks","3.frameworks\u002F1.index",[34,35,39,43],{"title":30,"path":31,"stem":32},{"title":36,"path":37,"stem":38},"React","\u002Fframeworks\u002Freact","3.frameworks\u002F2.react",{"title":40,"path":41,"stem":42},"Vue","\u002Fframeworks\u002Fvue","3.frameworks\u002F3.vue",{"title":44,"path":45,"stem":46},"Svelte","\u002Fframeworks\u002Fsvelte","3.frameworks\u002F4.svelte",{"title":48,"path":49,"stem":50,"children":51},"Core API","\u002Fapi","4.api\u002F1.index",[52,53,57,61],{"title":48,"path":49,"stem":50},{"title":54,"path":55,"stem":56},"React API","\u002Fapi\u002Freact","4.api\u002F2.react",{"title":58,"path":59,"stem":60},"Vue API","\u002Fapi\u002Fvue","4.api\u002F3.vue",{"title":62,"path":63,"stem":64},"Svelte API","\u002Fapi\u002Fsvelte","4.api\u002F4.svelte",{"id":66,"title":22,"body":67,"description":93,"extension":317,"meta":318,"navigation":319,"path":23,"seo":320,"stem":24,"__hash__":321},"content\u002F2.concepts\u002F2.concurrency-and-cancellation.md",{"type":68,"value":69,"toc":312},"minimark",[70,75,87,127,130,134,141,165,168,172,183,298,308],[71,72,74],"h2",{"id":73},"all-requests","All requests",[76,77,78,82,83,86],"p",{},[79,80,81],"code",{},"concurrency: \"all\""," is the default. Every non-cancelled request may update the snapshot when it settles. ",[79,84,85],{},"isLoading"," remains true until all active requests finish.",[88,89,94],"pre",{"className":90,"code":91,"language":92,"meta":93,"style":93},"language-ts shiki shiki-themes github-light github-dark github-dark","const save = createAsync(saveRecord, { concurrency: \"all\" });\n","ts","",[79,95,96],{"__ignoreMap":93},[97,98,101,105,109,112,116,120,124],"span",{"class":99,"line":100},"line",1,[97,102,104],{"class":103},"so5gQ","const",[97,106,108],{"class":107},"suiK_"," save",[97,110,111],{"class":103}," =",[97,113,115],{"class":114},"shcOC"," createAsync",[97,117,119],{"class":118},"slsVL","(saveRecord, { concurrency: ",[97,121,123],{"class":122},"sfrk1","\"all\"",[97,125,126],{"class":118}," });\n",[76,128,129],{},"This is useful for independent actions where every result matters.",[71,131,133],{"id":132},"latest-request","Latest request",[76,135,136,137,140],{},"With ",[79,138,139],{},"concurrency: \"latest\"",", older requests may still resolve or reject, but only the newest request can update state or invoke callbacks.",[88,142,144],{"className":90,"code":143,"language":92,"meta":93,"style":93},"const search = createAsync(searchUsers, { concurrency: \"latest\" });\n",[79,145,146],{"__ignoreMap":93},[97,147,148,150,153,155,157,160,163],{"class":99,"line":100},[97,149,104],{"class":103},[97,151,152],{"class":107}," search",[97,154,111],{"class":103},[97,156,115],{"class":114},[97,158,159],{"class":118},"(searchUsers, { concurrency: ",[97,161,162],{"class":122},"\"latest\"",[97,164,126],{"class":118},[76,166,167],{},"This is useful for search, filtering, and route-driven queries where stale responses must not replace newer data.",[71,169,171],{"id":170},"abortable-handlers","Abortable handlers",[76,173,174,175,178,179,182],{},"Enable ",[79,176,177],{},"abortable"," to receive an ",[79,180,181],{},"AbortSignal"," in the handler context:",[88,184,186],{"className":90,"code":185,"language":92,"meta":93,"style":93},"const request = createAsync(\n  ({ signal }, url: string) => fetch(url, { signal: signal ?? undefined }),\n  { abortable: true },\n);\n\nrequest.execute(\"\u002Fapi\u002Fdata\");\nrequest.abort();\n",[79,187,188,202,245,257,263,270,287],{"__ignoreMap":93},[97,189,190,192,195,197,199],{"class":99,"line":100},[97,191,104],{"class":103},[97,193,194],{"class":107}," request",[97,196,111],{"class":103},[97,198,115],{"class":114},[97,200,201],{"class":118},"(\n",[97,203,205,208,212,215,218,221,224,227,230,233,236,239,242],{"class":99,"line":204},2,[97,206,207],{"class":118},"  ({ ",[97,209,211],{"class":210},"sQHwn","signal",[97,213,214],{"class":118}," }, ",[97,216,217],{"class":210},"url",[97,219,220],{"class":103},":",[97,222,223],{"class":107}," string",[97,225,226],{"class":118},") ",[97,228,229],{"class":103},"=>",[97,231,232],{"class":114}," fetch",[97,234,235],{"class":118},"(url, { signal: signal ",[97,237,238],{"class":103},"??",[97,240,241],{"class":107}," undefined",[97,243,244],{"class":118}," }),\n",[97,246,248,251,254],{"class":99,"line":247},3,[97,249,250],{"class":118},"  { abortable: ",[97,252,253],{"class":107},"true",[97,255,256],{"class":118}," },\n",[97,258,260],{"class":99,"line":259},4,[97,261,262],{"class":118},");\n",[97,264,266],{"class":99,"line":265},5,[97,267,269],{"emptyLinePlaceholder":268},true,"\n",[97,271,273,276,279,282,285],{"class":99,"line":272},6,[97,274,275],{"class":118},"request.",[97,277,278],{"class":114},"execute",[97,280,281],{"class":118},"(",[97,283,284],{"class":122},"\"\u002Fapi\u002Fdata\"",[97,286,262],{"class":118},[97,288,290,292,295],{"class":99,"line":289},7,[97,291,275],{"class":118},[97,293,294],{"class":114},"abort",[97,296,297],{"class":118},"();\n",[76,299,300,303,304,307],{},[79,301,302],{},"abort()"," also invalidates state updates, even when the underlying handler does not observe the signal. ",[79,305,306],{},"reset()"," invalidates active work and restores the original data.",[309,310,311],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":93,"searchDepth":204,"depth":204,"links":313},[314,315,316],{"id":73,"depth":204,"text":74},{"id":132,"depth":204,"text":133},{"id":170,"depth":204,"text":171},"md",{},{},{"title":22,"description":93},"wFxtv5NgUZtkJVb0nszyGJB-r2QQvhGarc1c_oQOuYs",[323,324],{"title":16,"path":17,"stem":18,"description":93,"children":-1},{"title":26,"path":27,"stem":28,"description":93,"children":-1},1786006625845]