async()在函式的鏈中使用多個會破壞我的功能。有沒有辦法可以包含Key2pkcs8()在里面generateKey()?
async function generateKey() {
let getKeyPair = await crypto.subtle.generateKey(
{
name: "ECDH",
namedCurve: "P-384"
},
false,
["deriveKey"]
);
let PriKey = async() => {
let PriKey = await getKeyPair.privateKey;
console.log("pri = " PriKey);
return PriKey;
};
let PubKey = async() => {
let PubKey = await getKeyPair.publicKey;
console.log("pub = " PubKey);
};
let Key2pkcs8 = async(PriKey, PubKey) => {
let Key2pkcs8Pub = await crypto.subtle.exportKey("pkcs8", PubKey);
let Key2pkcs8Pri = await crypto.subtle.exportKey("pkcs8", PriKey);
return pkcs8keyarray = [Key2pkcs8Pub, Key2pkcs8Pri];
return Keyarray = [PriKey(), PubKey()]; // i want to put <return pkcs8keyarray()> here
};
generateKey().then(Key2pkcs8 => console.log(Key2pkcs8[0], Key2pkcs8[1]));按預期作業并回傳pri = [object CryptoKey]\nCryptoKey { type: "private", extractable: false, algorithm: {…}, usages: (1) […] }
但是當使用return pkcs8keyarray()而不是return Keyarray = [PriKey(), PubKey()];它時,它會中斷并回傳 undefined
我本來打算將key2pkcs2密鑰作為變數(公鑰或私鑰),然后在最后以類似于示例的陣列形式回傳兩者
uj5u.com熱心網友回復:
async function generateKey() {
let keyPair = await crypto.subtle.generateKey(
{
name: "ECDH",
namedCurve: "P-384"
},
false,
["deriveKey"]
);
let PriKey = (keyPair) => {
let PriKey = keyPair.privateKey;
console.log("pri = " PriKey);
return keyPair;
};
let PubKey = (keyPair) => {
let PubKey = keyPair.publicKey;
console.log("pub = " PubKey);
return keyPair;
};
let Key2pkcs8 = async(keyPair) => {
console.log("key = " keyPair);
let Key2pkcs8 = await crypto.subtle.exportKey("pkcs8", keyPair);
return Key2pkcs8;
};
let printme = async() => {
let printme = await Key2pkcs8(PubKey());
console.log(printme);
return printme;
};
return printme();
}
用法:
generateKey().then(Key2pkcs8 => console.log(Key2pkcs8 ));
如果您的外部iife是異步的,await將已經將異步流轉換為同步,這意味著getKeyPair(或keyPair在我的代碼段中)在您呼叫其他函式時已經可用。
PubKey并且PriKey不需要異步,在這兩種情況下你都不會回傳任何東西。Key2pkcs8也沒有回傳任何東西,那么您到底想await Key2pkcs8(PubKey());回傳什么?理想情況下,如果您希望結果Promise決議為undefined. 試一試上面的代碼片段,我沒有測驗它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366602.html
