Javascript http请求-需要调用和存储结果以进行处理

Javascript http请求-需要调用和存储结果以进行处理,javascript,Javascript,异步JS不是我喜欢的 我有一些东西看起来像这样: function GetData() { http.get(options, function (error, response, body) { return JSON.stringify(body.results[0].members); }); } var list = GetData(); console.log(list); 这当然行不通。列表是“未定义的”,可能是因为console.log在GetDa

异步JS不是我喜欢的

我有一些东西看起来像这样:

function GetData() {
    http.get(options, function (error, response, body) {
        return JSON.stringify(body.results[0].members);
    });
}
var list = GetData();
console.log(list);

这当然行不通。列表是“未定义的”,可能是因为console.log在GetData有机会返回之前运行。我已经为此挣扎太久了。是否有一个简短的修复方法?

将回调作为参数传递或创建承诺。 这是一个回调示例

function GetData(callback) {
    http.get(options, function (error, response, body) {
        callback(JSON.stringify(body.results[0].members));
    });
}
GetData(function(list){
  console.log(list)
})

问题不在于它是异步的,而是在http.get回调函数中返回

function GetData(callback) {
    http.get(options, function (error, response, body) {
        callback(JSON.stringify(body.results[0].members));
    });
}
var callback = function (a) {console.log(a);};
GetData(callback);


您可以使用async Wait并从函数GetData返回承诺

function GetData() {
  return new Promise((resolve, reject) => {
    http.get(options, function (error, response, body) {
        if(!error) resolve(JSON.stringify(body.results[0].members));
        else reject(error);
    });
  });
}
var list = await GetData();
console.log(list);

不要忘记在我们正在使用的函数中使用async
await GetData()

这是否回答了您的问题?请查看此页面: