我在MDN上注意到以下example (last one),这使我相信可以将SubtleCrypto函数的结果分配给变量。但是据我所知/已经研究过异步/等待,只能在await函数内使用async ...

async function sha256(message) {
    const msgBuffer = new TextEncoder('utf-8').encode(message);                     // encode as UTF-8
    const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);            // hash the message
    const hashArray = Array.from(new Uint8Array(hashBuffer));                       // convert ArrayBuffer to Array
    const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join(''); // convert bytes to hex string
    return hashHex;
}

sha256('abc').then(hash => console.log(hash));

const hash = await sha256('abc');


这个例子是不正确的还是我误解了什么?最重要的是;是否可以将SubtleCrypto / Promise的结果分配给不带.then()的变量。

对于那些问自己为什么为什么要死去的人。我正在将WebCrypto与redux-persist结合使用,但是它似乎无法处理基于Promise的transforms

最佳答案

该示例具有误导性(或不完整),实际上不能在await之外使用async function。我刚刚编辑了它(MDN是一个Wiki!)。


  是否可以将SubtleCrypto / Promise的结果分配给不带.then()的变量。


是的,它将promise对象存储在变量中。要访问承诺结果,您需要使用thenawait

关于javascript - 异步/等待结合SubtleCrypto,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42939339/

10-08 22:15