जे एस वादा प्रतीक्षा करें जब तक हल करने के लिए जारी है, "मुख्य"

0

सवाल

मैं कैसे कर सकते हैं बल के एक समारोह को हल करने के लिए एक लंबित वादा का उपयोग करने से पहले यह जावास्क्रिप्ट में

  generateKey(pass, iter).then(function(result) {
    Pkey = result;
  });

ऊपर Pkey रिटर्न <empty string> हल करने से पहले मैं लिख सकता है एक पाश की जाँच करने के लिए गैर-शून्य लेकिन यह है कि counterintuitive लगता है, नहीं?

और

  Pkey = generateKey(pass, iter);

रिटर्न एक लंबित वादा है कि अंत में पूरी की

function generateKey(passwd, iterations) {

  var encoder = new TextEncoder('utf-8');
  var passphraseKey = encoder.encode(passwd);
  var saltBuffer = encoder.encode("carthage");

  return crypto.subtle.importKey(
    'raw',
    passphraseKey,
    {name: 'PBKDF2'},
    false,
    ['deriveBits', 'deriveKey']
  ).then(function(key) {
//    console.log(key);
    return window.crypto.subtle.deriveKey(
    { "name": 'PBKDF2',
      "salt": saltBuffer,
      "iterations": iterations,
      "hash": 'SHA-256'
    },
    key,
    { "name": 'AES-CBC',
      "length": 256
    },
    true,
    [ "encrypt", "decrypt" ]
  )
  }).then(function (webKey) {
//    console.log(webKey);
    return crypto.subtle.exportKey("raw", webKey);
  }).then(function (buffer) {
//    console.log(buffer);
//    console.log(saltBuffer);
//    console.log("Private Key = " + buf2hex(buffer));
//    console.log("Salt = " + bytesToHexString(saltBuffer));
    return buffer;
  });

}



function buf2hex(buffer) { // buffer is an ArrayBuffer
  return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
}



function bytesToHexString(byteArray) {
  return Array.prototype.map.call(byteArray, function(byte) {
    return ('0' + (byte & 0xFF).toString(16)).slice(-2);
  }).join('');
}

asynchronous javascript promise
2021-11-23 04:58:14
1

सबसे अच्छा जवाब

1

आप कर सकते हैं का उपयोग async & का इंतजार के रूप में नीचे

async function generateKey(passwd, iterations) {...}
...
Pkey = await generateKey(pass, iter);
2021-11-23 05:13:48

लेकिन, ध्यान में रखना है कि इस समारोह में अभी भी लौटने के लिए एक वादा करता है और फोन करने वाले इस समारोह का अभी भी उपयोग करने के लिए है .then() या await प्राप्त करने के लिए हल से मूल्य वादा करता हूँ इस समारोह में रिटर्न.
jfriend00

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में