2016-09-29 9 views
3

私は指紋2の結果をvarに保存することにしています。指紋2の結果をvarに保存する方法

var fp = new Fingerprint2().get(); 

またはいくつかの改善方法:

var info = {}; 
new Fingerprint2().get(function(result, components){ 
    info.fingerprint = result; 
}); 
alert(info.fingerprint); 

ではなく の仕事は、のような良い方法はありますか? 現代&柔軟なブラウザフィンガープリントライブラリ、オリジナルfingerprintjsの後継http://valve.github.io/fingerprintjs2/

使用法: - そのalert(info.fingerprint)を意味するFingerprint2().get(...)が非同期であるため、期待通り

new Fingerprint2().get(function(result, components){ 
    console.log(result); //a hash, representing your device fingerprint 
    console.log(components); // an array of FP components 
}); 

答えて

5

はあなたのコードが動作していない編集した

の前に実行され、getに渡されたコールバック関数が終了した後、が終了します。

なぜ非同期性の概念が理解できない場合にこれが必要なのかを理解するには、demo pageをご覧ください。あなたはそれが指紋を計算するのにどれくらい時間がかかるかを示していることがわかります。 alertは、getが呼び出されたときと計算されたときの間で実行されるため、指紋の内容を知ることができません。

あなたが指紋を持つことが保証できる唯一の時間は、コールバック機能の間です。

+0

alert()は私のコードの例です。私はjavascriptコードでそれをvarに保存したいと思います。どのようにそれをvar secureに格納するか –

+1

同じルールが適用されます - 変数で使用するのは問題ありませんが、* getの中の*関数が実行された後でなければ*できません。上の例を参照してください。 'afterFingerprintIsCalculated'の中のinfo変数から読み込むのは安全です。そこで読み込む必要があるコードをそこに置くことができます。 – iblamefish

+0

それを保存してサイド機能を使用する方法はありますか?私のコードはその機能で動くべきではありません。なぜなら私はいくつかのvars @iblamefishを持っているからです。 –

関連する問題