Javascript 如何使用函数外的变量?

Javascript 如何使用函数外的变量?,javascript,function,callback,asynccallback,Javascript,Function,Callback,Asynccallback,嘿,伙计们,我在函数范围外使用“appIds”变量时遇到了问题,怎么才能做到这一点?下面是NodeJS中使用的脚本: var appIds = []; request("http://api.steampowered.com/ISteamApps/GetAppList/v2?format=json", function(error, response, body) { if (!error && response.statusCode == 200) {

嘿,伙计们,我在函数范围外使用“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);

这是不起作用的,因为它是一个异步调用。您只能在回调内部执行此操作

您在注释代码中所做的是正确的处理方法

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.
  }
});

这是不起作用的,因为它是一个异步调用。您只能在回调内部执行此操作

您在注释代码中所做的是正确的处理方法

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.
  }
});

我明白了,在范围之外没有其他方法可以使用它吗?因为代码与第二个请求一起继续,而第二个请求需要使用第一个请求的结果。您必须将它们一个接一个地包装起来。你不能就这样假设下去。您已经在第一次请求回调中触发了另一个请求。您可以使该请求同步,然后您就可以不费吹灰之力地使用您糟糕的编码方式。我明白了,在范围之外没有其他方法可以使用它吗?因为代码与第二个请求一起继续,而第二个请求需要使用第一个请求的结果。您必须将它们一个接一个地包装起来。你不能就这样假设下去。您已经在第一次请求回调中触发了另一个请求。您可以使该请求同步,然后您就可以不用额外的努力而让您糟糕的编码方式正常工作。