17
Why is crypto.subtle.digest async?
(programming.dev)
Why is crypto.subtle.digest
designed to return a promise?
Every other system I've ever worked with has the signature hash(bytes) => bytes
, yet whatever committee designed the Subtle Crypto API decided that the browser version should return a promise. Why? I've looked around but I've never found any discussion on the motivation behind that.
its a good idea to be as non blocking as possible especially on time and resource consuming tasks like IO, cryptography, ...
just use
await
in anasync function
.Sure, I'll just put
await
andasync
everywhere. Oh wait, I can't. A constructor can't be async so now I need to restructure my code to use async factories instead of constructors. Wonderful...It sounds like you’re trying to do OOD/OOP. In js that’s usually not the way to go. You might want to restructure into a more functional architecture anyway.
Sounds like an architectural issue to begin with. A constructor shouldn't do the heavy lifting to begin with.
You consider calculating the hash of a few bytes to be heavy lifting?
The API doesn't restrict the amount of bytes to be hashed. So yeah it's still heavy lifting.
Trigger a loading event after the constructor is finished that the view model takes to calculate your hash.