|
|
@ -5,6 +5,7 @@ import {
|
|
|
|
DERIVED,
|
|
|
|
DERIVED,
|
|
|
|
DESTROYED,
|
|
|
|
DESTROYED,
|
|
|
|
DIRTY,
|
|
|
|
DIRTY,
|
|
|
|
|
|
|
|
EFFECT_ASYNC,
|
|
|
|
EFFECT_PRESERVED,
|
|
|
|
EFFECT_PRESERVED,
|
|
|
|
MAYBE_DIRTY,
|
|
|
|
MAYBE_DIRTY,
|
|
|
|
UNOWNED
|
|
|
|
UNOWNED
|
|
|
@ -22,7 +23,7 @@ import {
|
|
|
|
import { equals, safe_equals } from './equality.js';
|
|
|
|
import { equals, safe_equals } from './equality.js';
|
|
|
|
import * as e from '../errors.js';
|
|
|
|
import * as e from '../errors.js';
|
|
|
|
import * as w from '../warnings.js';
|
|
|
|
import * as w from '../warnings.js';
|
|
|
|
import { block, destroy_effect } from './effects.js';
|
|
|
|
import { block, destroy_effect, render_effect } from './effects.js';
|
|
|
|
import { inspect_effects, internal_set, set_inspect_effects, source } from './sources.js';
|
|
|
|
import { inspect_effects, internal_set, set_inspect_effects, source } from './sources.js';
|
|
|
|
import { get_stack } from '../dev/tracing.js';
|
|
|
|
import { get_stack } from '../dev/tracing.js';
|
|
|
|
import { tracing_mode_flag } from '../../flags/index.js';
|
|
|
|
import { tracing_mode_flag } from '../../flags/index.js';
|
|
|
@ -110,8 +111,7 @@ export function async_derived(fn, location) {
|
|
|
|
/** @type {(() => void) | null} */
|
|
|
|
/** @type {(() => void) | null} */
|
|
|
|
var discard = null;
|
|
|
|
var discard = null;
|
|
|
|
|
|
|
|
|
|
|
|
// TODO this isn't a block
|
|
|
|
render_effect(() => {
|
|
|
|
block(() => {
|
|
|
|
|
|
|
|
if (DEV) from_async_derived = active_effect;
|
|
|
|
if (DEV) from_async_derived = active_effect;
|
|
|
|
var current = (promise = fn());
|
|
|
|
var current = (promise = fn());
|
|
|
|
if (DEV) from_async_derived = null;
|
|
|
|
if (DEV) from_async_derived = null;
|
|
|
@ -165,7 +165,7 @@ export function async_derived(fn, location) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}, EFFECT_PRESERVED);
|
|
|
|
}, EFFECT_ASYNC | EFFECT_PRESERVED);
|
|
|
|
|
|
|
|
|
|
|
|
return new Promise(async (fulfil) => {
|
|
|
|
return new Promise(async (fulfil) => {
|
|
|
|
// if the effect re-runs before the initial promise
|
|
|
|
// if the effect re-runs before the initial promise
|
|
|
|