如何将fingerprint2结果存储在var中

时间:2016-09-29 11:21:58

标签: javascript

我想将fingerprint2结果存储在var。

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

但不行 是否有更好的方式:

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

还是一些增强的方法?

编辑: 现代与现代灵活的浏览器指纹识别库,原始指纹的继承者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
});

1 个答案:

答案 0 :(得分:8)

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

如果您不理解异步性的概念,要理解为什么这是必要的,请查看demo page。你会看到它说明计算指纹需要多长时间。您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);
}