pull/10931/head
Rich Harris 2 years ago
parent 5df01493a7
commit e791b534ea

@ -39,7 +39,7 @@ import { remove } from '../dom/reconciler.js';
*/
function create_effect(type, fn, sync, init = true) {
/** @type {import('#client').Effect} */
const signal = {
const effect = {
parent: current_effect,
dom: null,
deps: null,
@ -55,34 +55,35 @@ function create_effect(type, fn, sync, init = true) {
};
if (current_effect !== null) {
signal.l = current_effect.l + 1;
effect.l = current_effect.l + 1;
}
if (current_reaction !== null) {
if (current_reaction.effects === null) {
current_reaction.effects = [signal];
current_reaction.effects = [effect];
} else {
current_reaction.effects.push(signal);
current_reaction.effects.push(effect);
}
}
if (init) {
if (sync) {
const previously_flushing_effect = is_flushing_effect;
try {
set_is_flushing_effect(true);
execute_effect(signal);
set_signal_status(signal, CLEAN);
signal.f |= EFFECT_RAN;
execute_effect(effect);
set_signal_status(effect, CLEAN);
effect.f |= EFFECT_RAN;
} finally {
set_is_flushing_effect(previously_flushing_effect);
}
} else {
schedule_effect(signal);
schedule_effect(effect);
}
}
return signal;
return effect;
}
/**

@ -216,9 +216,6 @@ export function check_dirtiness(reaction) {
* @returns {V}
*/
export function execute_reaction_fn(signal) {
const fn = signal.fn;
const flags = signal.f;
const previous_dependencies = current_dependencies;
const previous_dependencies_index = current_dependencies_index;
const previous_untracked_writes = current_untracked_writes;
@ -230,11 +227,11 @@ export function execute_reaction_fn(signal) {
current_dependencies_index = 0;
current_untracked_writes = null;
current_reaction = signal;
current_skip_reaction = !is_flushing_effect && (flags & UNOWNED) !== 0;
current_skip_reaction = !is_flushing_effect && (signal.f & UNOWNED) !== 0;
current_untracking = false;
try {
let res = fn();
let res = signal.fn();
let dependencies = /** @type {import('./types.js').Value<unknown>[]} **/ (signal.deps);
if (current_dependencies !== null) {
let i;

Loading…
Cancel
Save