diff --git a/src/internal/transitions.js b/src/internal/transitions.js index 1ba1c0ff0c..a6579b0cef 100644 --- a/src/internal/transitions.js +++ b/src/internal/transitions.js @@ -164,8 +164,10 @@ export function create_out_transition(node, fn, params) { } if (typeof config === 'function') { - config = config(); - wait().then(go); + wait().then(() => { + config = config(); + go(); + }); } else { go(); } diff --git a/test/runtime/samples/transition-js-deferred-b/_config.js b/test/runtime/samples/transition-js-deferred-b/_config.js new file mode 100644 index 0000000000..05929964cd --- /dev/null +++ b/test/runtime/samples/transition-js-deferred-b/_config.js @@ -0,0 +1,13 @@ +export default { + test({ assert, component, target, raf }) { + component.visible = true; + + return Promise.resolve().then(() => { + const div = target.querySelector('.foo'); + assert.equal(div.foo, 0); + + raf.tick(50); + assert.equal(div.foo, 0.5); + }); + }, +}; diff --git a/test/runtime/samples/transition-js-deferred-b/main.svelte b/test/runtime/samples/transition-js-deferred-b/main.svelte new file mode 100644 index 0000000000..2cd1dc3e7c --- /dev/null +++ b/test/runtime/samples/transition-js-deferred-b/main.svelte @@ -0,0 +1,46 @@ + + +{#if visible} +