await...then shorthand - fixes #957

pull/1004/head
Rich Harris 7 years ago committed by GitHub
parent 81f449093d
commit b83afb0528
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -283,14 +283,22 @@ export default function mustache(parser: Parser) {
}
}
let awaitBlockShorthand = type === 'AwaitBlock' && parser.eat('then');
if (awaitBlockShorthand) {
parser.requireWhitespace();
block.value = parser.readIdentifier();
parser.allowWhitespace();
}
parser.eat('}}', true);
parser.current().children.push(block);
parser.stack.push(block);
if (type === 'AwaitBlock') {
block.pending.start = parser.index;
parser.stack.push(block.pending);
const childBlock = awaitBlockShorthand ? block.then : block.pending;
childBlock.start = parser.index;
parser.stack.push(childBlock);
}
} else if (parser.eat('yield')) {
// {{yield}}

@ -0,0 +1,45 @@
let fulfil;
let thePromise = new Promise(f => {
fulfil = f;
});
export default {
data: {
thePromise
},
html: ``,
test(assert, component, target) {
fulfil(42);
return thePromise
.then(() => {
assert.htmlEqual(target.innerHTML, `
<p>the value is 42</p>
`);
let reject;
thePromise = new Promise((f, r) => {
reject = r;
});
component.set({
thePromise
});
assert.htmlEqual(target.innerHTML, ``);
reject(new Error('something broke'));
return thePromise.catch(() => {});
})
.then(() => {
assert.htmlEqual(target.innerHTML, `
<p>oh no! something broke</p>
`);
});
}
};

@ -0,0 +1,5 @@
{{#await thePromise then theValue}}
<p>the value is {{theValue}}</p>
{{catch theError}}
<p>oh no! {{theError.message}}</p>
{{/await}}
Loading…
Cancel
Save