0

我正在尝试使用fingerprintjs2 javascript 库来获取浏​​览器指纹。

以下代码可以正常工作:

new Fingerprint2().get(function (result) {
    var output = result;
    document.write(output);
});

但是,我想在这个块之外设置一个变量,以便以后使用,例如:

var output;

new Fingerprint2().get(function (result) {
    output = result;
});

document.write(output);

但在这种情况下,我得到了输出:

undefined

我猜这与范围有关,所以有什么方法可以在外部范围中设置变量,还是我需要将所有以下代码放在这个函数调用中?

我已经阅读了有关获取嵌套函数值的其他问题,但在这种情况下似乎没有一个工作。

4

2 回答 2

0

这不起作用,因为您在异步获取返回之前打印输出。

尝试这个:

var output;

var callbackFunction = function(result) {
output = result;
document.write(output);
//do whatever you want to do with output inside this function or call another function inside this function. 
}

new Fingerprint2().get(function (result) {
   // you don't know when this will return because its async so you have to code what to do with the variable after it returns;
   callbackFunction(result);
});
于 2016-08-16T14:09:30.250 回答
0

这不是你应该这样做的方式。我正在使用 ES6 编写代码。

let Fingerprint2Obj = new Fingerprint2().get(function (result) {
    let obj = {
     output: result
    }
    return obj;
});

您不能在函数外部调用 var,如果您通过对象或字符串将其发送出去。document.write(Fingerprint2Obj.output);

于 2016-08-16T14:10:44.700 回答