If you've written a fair amount of JavaScript these days, it's likely that you came across promises and their language integration async functions. With Proxymise there is now a way to make your code even more consise!
What
Proxymise is a JavaScript library that lets you wrap functions that return promises so you can call methods on the objects they would resolve to.
Why
When using synchronous functions, you can use the returned value directly. This lets you write fluent interfaces for your libraries.
select("*").from("myTable").where("x > 10");
While async functions helped a bit with some types of invocations, it still can clutter your code.
Proxymise wants to solve this issue.
How
Instead of writing a then
chain like this:
fetch("example.com")
.then(r => r.json())
.then(r => r.record.id)
.then(id => ...);
Or a await
list like that:
let r = await fetch("example.com");
r = await r.json();
const {id} = r.record;
...
It allows you to wrap your promise and call methods on it, making the your interfaces more fluent.
const newFetch = proxymise(fetch);
const {id} = await newFetch("example.com").json().record;
It does this by returning proxy objects right away while the promise is still in flight. These will then wait for the resolve and apply the function calls later.
Conclusion
Proxymise is a quick way to make asynchronous library usage more consise by getting rid of boilerplate code.
Top comments (8)
Today I hear the first time about proxy objects, now I find this articel, solving an awefull problem that always disgust me.
Thanks a lot ! !
Cool :D
I read about proxies rather often, but this is the first application that really blew my mind :D
Thanks! Btw it's 'proxymise' rather than 'proximise' (portmanteau of 'proxy' and 'promise' that was still available on npm).
Oh, good point! :D
Fixed it!
Wow! What an amazing idea! 👍👍
Genius.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.