Возвращаемое значение из параметра функции в Javascript
Я пытаюсь использовать библиотеку javascript fingerprintjs2, чтобы получить отпечатки браузера.
Следующий код работает нормально:
new Fingerprint2().get(function (result) {
var output = result;
document.write(output);
});
Тем не менее, я хотел бы установить переменную вне этого блока, чтобы использовать ее позже, например:
var output;
new Fingerprint2().get(function (result) {
output = result;
});
document.write(output);
но в этом случае я получаю вывод:
undefined
Я предполагаю, что это связано с областью видимости, так есть ли способ установить переменную во внешней области видимости, или мне нужно поместить весь следующий код внутри этого вызова функции?
Я читал другие вопросы о получении значения вложенных функций, но, похоже, ни один из них не работает в этом случае.
2 ответа
Это не будет работать, потому что вы печатаете выходные данные до того, как асинхронное получение вернулось.
попробуй это:
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);
});
Ты не должен это делать. я пишу код с помощью ES6.
let Fingerprint2Obj = new Fingerprint2().get(function (result) {
let obj = {
output: result
}
return obj;
});
Вы не можете вызвать переменную вне функции, если вы отправляете ее через объект или строку. document.write(Fingerprint2Obj.output);