2016-05-14 4 views
0

Эй, ребята, у меня проблемы с использованием переменной «appIds» за пределами области действия, как это можно сделать? Ниже приведен скрипт, используемый в NodeJS:Как использовать переменную вне функции?

var appIds = []; 

request("http://api.steampowered.com/ISteamApps/GetAppList/v2?format=json", function(error, response, body) { 
    if (!error && response.statusCode == 200) { 

     var o = JSON.parse(body); 
     appIds = o.applist.apps.map(v => v.appid); 
     // console.log(appIds); works within scope. 
    } 
}); 

console.log(appIds); 

ответ

3

Это не работает, так как это асинхронный вызов. Вы можете делать только внутри обратного вызова.

Что вы делаете в прокомментированном коде, это правильный способ справиться с этим.

request("http://api.steampowered.com/ISteamApps/GetAppList/v2?format=json", function(error, response, body) { 
if (!error && response.statusCode == 200) { 

    var o = JSON.parse(body); 
    appIds = o.applist.apps.map(v => v.appid); 
    console.log(appIds); //works within scope. 
    } 
}); 
+0

Я вижу, нет другого способа использовать его за пределами сферы действия? Поскольку код продолжается вместе со вторым запросом, который должен использовать результаты первого запроса. – Kai

+0

Вы должны обернуть их один в другой. Вы не можете просто пойти и принять это. у вас есть другой запрос в обратном вызове первого запроса. –

+1

Или используйте обещания. – Andy

Смежные вопросы