mirror of https://github.com/sveltejs/svelte
parent
346059505a
commit
91202a220b
@ -1,26 +1,37 @@
|
|||||||
import Renderer, { RenderOptions } from '../Renderer';
|
|
||||||
import AwaitBlock from '../../nodes/AwaitBlock';
|
|
||||||
import { x } from 'code-red';
|
import { x } from 'code-red';
|
||||||
import { get_const_tags } from './shared/get_const_tags';
|
import { get_const_tags } from './shared/get_const_tags.js';
|
||||||
|
|
||||||
export default function (node: AwaitBlock, renderer: Renderer, options: RenderOptions) {
|
/**
|
||||||
renderer.push();
|
* @param {AwaitBlock} node
|
||||||
renderer.render(node.pending.children, options);
|
* @param {Renderer} renderer
|
||||||
const pending = renderer.pop();
|
* @param {import('../Renderer').RenderOptions} options
|
||||||
|
*/
|
||||||
|
export default function (node, renderer, options) {
|
||||||
|
renderer.push();
|
||||||
|
renderer.render(node.pending.children, options);
|
||||||
|
|
||||||
renderer.push();
|
/**
|
||||||
renderer.render(node.then.children, options);
|
* @type {undefined}
|
||||||
const then = renderer.pop();
|
*/
|
||||||
|
const pending = renderer.pop();
|
||||||
|
renderer.push();
|
||||||
|
renderer.render(node.then.children, options);
|
||||||
|
|
||||||
renderer.add_expression(x`
|
/**
|
||||||
|
* @type {undefined}
|
||||||
|
*/
|
||||||
|
const then = renderer.pop();
|
||||||
|
renderer.add_expression(x `
|
||||||
function(__value) {
|
function(__value) {
|
||||||
if (@is_promise(__value)) {
|
if (@is_promise(__value)) {
|
||||||
__value.then(null, @noop);
|
__value.then(null, @noop);
|
||||||
return ${pending};
|
return ${pending};
|
||||||
}
|
}
|
||||||
return (function(${node.then_node ? node.then_node : ''}) { ${get_const_tags(
|
return (function(${node.then_node ? node.then_node : ''}) { ${get_const_tags(node.then.const_tags)}; return ${then}; }(__value));
|
||||||
node.then.const_tags
|
|
||||||
)}; return ${then}; }(__value));
|
|
||||||
}(${node.expression.node})
|
}(${node.expression.node})
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in new issue