Javascript http请求-需要调用和存储结果以进行处理
异步JS不是我喜欢的 我有一些东西看起来像这样: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
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()代码>这是否回答了您的问题?请查看此页面: