1
私はCryptoJsを使ってPDFファイルのハッシュ(sha256)を持っています。非同期関数からハッシュ値を取得する方法は?
私はすでにファイルのハッシュを持っていますが、私はその機能の外では取得できません。
これは私のコードです:
var reader = new FileReader();
var hash = "";
reader.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
var i8a = new Uint8Array(evt.target.result);
var a = []; for (var i = 0; i < i8a.length; i += 4) { a.push(i8a[i] << 24 | i8a[i + 1] << 16 | i8a[i + 2] << 8 | i8a[i + 3]); }
var wordArray = CryptoJS.lib.WordArray.create(a,i8a.length);
var hash = CryptoJS.SHA256(wordArray);
alert(hash);
}
};
var blob = file.slice(0, file.size + 1);
reader.readAsArrayBuffer(blob);
alert(hash);
最初のアラートは私にSHAを与えるが、2番目は空です。 後で使用するために関数にハッシュを定義するにはどうすればよいですか?
コールバック関数を追加しても機能します。 は、しかし、私はAjaxリクエストを作りたかった、と私はこのようなコールバック関数へのリクエストを追加するとき:あなたがコールバックを必要とする
Uncaught TypeError: Cannot read property 'words' of undefined
これは動作していますが、私がajaxリクエストを行いたいと思った後、コールバック関数にajaxリクエストを追加すると、あなたのソリューションは動作しません。何か考えましたか? – wxcvbn
基本的に同じです。非同期呼び出しで読み上げます。 Ajaxコールは、完了後にコールバックを必要とします。 – Mouser
申し訳ありませんわからない、どうやってAJAXリクエストでコールバックできますか? – wxcvbn