async() — svelte Function Reference
Architecture documentation for the async() function in async.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f["async()"] 0ae9bf62_aa68_bcd6_7a5c_a9620e877659["async.js"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|defined in| 0ae9bf62_aa68_bcd6_7a5c_a9620e877659 b31601aa_35ce_7827_5394_99fb97fa27d2["hydrate_next()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| b31601aa_35ce_7827_5394_99fb97fa27d2 8bcc1a1c_73ab_4fe7_59be_b28bbe88fd3e["skip_nodes()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| 8bcc1a1c_73ab_4fe7_59be_b28bbe88fd3e db550759_ee3b_160c_8afa_d1aa9fae478c["fn()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| db550759_ee3b_160c_8afa_d1aa9fae478c 40f27ad3_30bb_8f2a_3fb3_757088cf7428["set_hydrate_node()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| 40f27ad3_30bb_8f2a_3fb3_757088cf7428 2c67b85b_d904_f73c_3422_6086d51dc1d1["get_boundary()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| 2c67b85b_d904_f73c_3422_6086d51dc1d1 2ba0836c_3ec9_0e68_f2ba_cf1bb3adc645["is_rendered()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| 2ba0836c_3ec9_0e68_f2ba_cf1bb3adc645 95fd9978_b635_37dc_dfee_13c687d48cd6["update_pending_count()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| 95fd9978_b635_37dc_dfee_13c687d48cd6 ab9c13ec_1c6d_0b81_72f5_188dfda4191b["increment()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| ab9c13ec_1c6d_0b81_72f5_188dfda4191b b9aaaccb_7510_28de_bb53_f808b2cb1d5e["flatten()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| b9aaaccb_7510_28de_bb53_f808b2cb1d5e f5b61c69_d41c_bdb7_b931_5b8b3374332c["set_hydrating()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| f5b61c69_d41c_bdb7_b931_5b8b3374332c a08b6cc5_af73_1be4_d02f_3113cf8a8305["get()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| a08b6cc5_af73_1be4_d02f_3113cf8a8305 d3725093_785a_922d_c180_94a562b1a49b["decrement()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| d3725093_785a_922d_c180_94a562b1a49b style 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/internal/client/dom/blocks/async.js lines 21–79
export function async(node, blockers = [], expressions = [], fn) {
var was_hydrating = hydrating;
var end = null;
if (was_hydrating) {
hydrate_next();
end = skip_nodes(false);
}
if (expressions.length === 0 && blockers.every((b) => b.settled)) {
fn(node);
// This is necessary because it is not guaranteed that the render function will
// advance the hydration node to $.async's end marker: it may stop at an inner
// block's end marker (in case of an inner if block for example), but it also may
// stop at the correct $.async end marker (in case of component child) - hence
// we can't just use hydrate_next()
// TODO this feels indicative of a bug elsewhere; ideally we wouldn't need
// to double-traverse in the already-resolved case
if (was_hydrating) {
set_hydrate_node(end);
}
return;
}
var boundary = get_boundary();
var batch = /** @type {Batch} */ (current_batch);
var blocking = boundary.is_rendered();
boundary.update_pending_count(1);
batch.increment(blocking);
if (was_hydrating) {
var previous_hydrate_node = hydrate_node;
set_hydrate_node(end);
}
flatten(blockers, [], expressions, (values) => {
if (was_hydrating) {
set_hydrating(true);
set_hydrate_node(previous_hydrate_node);
}
try {
// get values eagerly to avoid creating blocks if they reject
for (const d of values) get(d);
fn(node, ...values);
} finally {
if (was_hydrating) {
set_hydrating(false);
}
boundary.update_pending_count(-1);
batch.decrement(blocking);
}
});
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does async() do?
async() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/dom/blocks/async.js.
Where is async() defined?
async() is defined in packages/svelte/src/internal/client/dom/blocks/async.js at line 21.
What does async() call?
async() calls 12 function(s): decrement, flatten, fn, get, get_boundary, hydrate_next, increment, is_rendered, and 4 more.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free