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.

  • Ethan@programming.devOP
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    2
    ·
    7 months ago

    async/await infecting all of my code, being unable to create a get myField() method that involves a hash calculation. It may be standard to do heavy lifting concurrently, but async hash functions are certainly not standard in any of the languages I’ve used (which is quite a few).

    • vzq@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      2
      ·
      7 months ago

      From browsing your other comments on this thread I understand that you are in a context where you can’t await, that you expect the invocation to take very little time, and that the library offers no complementary sync interface.

      As far was I know you’re stuck in this case. I consider the stubborn refusal to add “resolve this promise synchronously right now” a major flaw in js.

      • macniel@feddit.de
        link
        fedilink
        arrow-up
        7
        ·
        edit-2
        7 months ago

        Given the nature of JS running only on a single thread. Promises/asynchronity is the only way to keep the browser from locking up.

        Thus insisting on any other way is a major flaw in the developer not the language.

        • vzq@lemmy.blahaj.zone
          link
          fedilink
          arrow-up
          5
          arrow-down
          1
          ·
          7 months ago

          Thus insisting on any other way is a major flaw in the developer not the language.

          I mean, I understand the idea, but this is a pretty asshole way to frame it. I don’t think I deserve that, and certainly OP doesn’t deserve that.