Это не работает по двум причинам. Прежде всего, аргументы функции являются локальными для функции, которой они принадлежат:
function foo(bar) {
console.log("Inside function: %s", typeof bar);
function inner(){
console.log("In function's scope: %s", typeof bar);
}
inner();
}
foo("Hi");
console.log("Elsewhere: %s", typeof bar);
Во-вторых, http.get()
начинает извлекать URL-адрес в другом потоке и продолжает выполнение остальной части программы, то есть немедленно вызывает vscode.window.showInformationMessage()
. Переменная даже еще не существует, поэтому, даже если у вас не было проблем с областью действия, печатать нечего. Затем, спустя некоторое время (даже если всего несколько миллисекунд), запрос GET завершается. Если это удалось, тогда наконец прозвучит function(chunk) {}
- слишком поздно!
let globalvar;
window.setTimeout(function (chunk){
console.log("Done! Chunk is %s", chunk);
globalvar = chunk;
}, 2000, "Hi!");
console.log("Chunk? %s", typeof globalvar);