如何将指纹2结果存储在变量中

How to store fingerprint2 result in a var

本文关键字:存储 变量 结果 指纹      更新时间:2023-09-26

我将把指纹2结果存储在一个变量中

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

但不能工作有更好的方法吗:

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

还是一些增强的方法?

编辑时间:现代&灵活的浏览器指纹库,原始fingerprintjs的继承者http://valve.github.io/fingerprintjs2/

用法:

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

您的代码没有按预期工作,因为Fingerprint2().get(...)是异步的,这意味着alert(info.fingerprint)将在传递给get的回调函数完成之前运行

如果您不了解异步性的概念,要了解为什么这是必要的,请查看演示页面。你会看到它显示了计算指纹需要多长时间。alert将在调用get和计算之间运行,因此无法知道指纹是什么。

您唯一可以保证拥有指纹的时间是在回调函数期间。

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

// BETTER (no global state)
new Fingerprint2().get(function(result, components) {
    var info = {
        fingerprint: result
    };
    processFingerprint(info);
});
function processFingerprint(data) {
    alert(data.fingerprint);
}