获取JavaScript中异步函数的返回值

时间:2018-09-05 14:57:57

标签: javascript asynchronous async-await webcryptoapi

我一直在寻找pbkdf2函数,却被this发疯了

async function pbkdf2(password, iterations=1e3) {
    const pwUtf8 = new TextEncoder().encode(password);                                           // encode pw as UTF-8
    const pwKey = await crypto.subtle.importKey('raw', pwUtf8, 'PBKDF2', false, ['deriveBits']); // create pw key

    const saltUint8 = crypto.getRandomValues(new Uint8Array(16));                                // get random salt

    const params = { name: 'PBKDF2', hash: 'SHA-256', salt: saltUint8, iterations: iterations }; // pbkdf2 params
    const keyBuffer = await crypto.subtle.deriveBits(params, pwKey, 256);                        // derive key

    const keyArray = Array.from(new Uint8Array(keyBuffer));                                      // key as byte array

    const saltArray = Array.from(new Uint8Array(saltUint8));                                     // salt as byte array

    const iterHex = ('000000'+iterations.toString(16)).slice(-6);                                // iter’n count as hex
    const iterArray = iterHex.match(/.{2}/g).map(byte => parseInt(byte, 16));                    // iter’ns as byte array

    const compositeArray = [].concat(saltArray, iterArray, keyArray);                            // combined array
    const compositeStr = compositeArray.map(byte => String.fromCharCode(byte)).join('');         // combined as string
    const compositeBase64 = btoa('v01'+compositeStr);                                            // encode as base64

    return compositeBase64;                                                                      // return composite key
}

我想从页面中调用此函数并打印输出,但是我以前从未使用过异步函数,也无法在google上找到任何答案。

我得到的返回值是

  

[对象承诺]

我想知道如何打印此函数的返回值。 作为示例,我不知道如何实现等待。

我正在使用

我如何使以下工作正常?

  

document.getElementById(“ demo”)。innerHTML = pbkdf2(“ test”);

我也没有在标记为重复的this中找到答案。

0 个答案:

没有答案