Возвращаемое значение из параметра функции в 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);

Другие вопросы по тегам