Added support for Promise
s in Spacebars.call
and Spacebars.dot
.
#413
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While #412 adds a way to unwrap
Promise
s in templates, here we'll focus on their usability. Currently, accessing aPromise
results inundefined
as they have very few accessible properties (most importantly, the resolved value is not there).In this pull request, I made
Spacebars.call
andSpacebars.dot
helpers aware ofPromise
s. The former resolves all of the arguments before calling the function, while the latter wraps property accesses inPromise
s.For details, please refer to the newly added tests.
(Fun fact: there are 0 deleted lines in this pull request.)
Once this and #412 will be merged, the "
await
unrolling" proposed before would not be needed. Consider the example from #409 (comment):This will have to unwrap the
Promise
, but the entire computation will be simple:Of course, it'll be possible to use the
@pending
,@rejected
, and@resolved
helpers to check the progress of calculatingresult
as well.