【发布时间】:2019-07-23 19:44:29
【问题描述】:
我无法获取回调代码之外的响应值。它在外部返回未定义,而在回调中它给出了正确的结果。
function doCall(urlString, callback) {
request.get(
urlString,
null,
null,
(err, data, result) => {
var statusCode = result.statusCode;
return callback(data);
}
);
}
const apiResponse = doCall(urlString, function(response) {
console.log('***************************' + response); //Prints correct result
return JSON.parse(response);
});
console.log('+++++++++++++++++++++++++' + apiResponse); //Prints undefined
【问题讨论】:
-
你需要使用 promise 或 async/await
-
您的函数
doCall不返回任何内容,因此将其返回“值”影响到apiResponse会将其值设置为undefined。 -
但 doCall 正在返回“返回回调(数据)”。但这不正确吗?
-
@Jeff 如何使用 async 帮助我获得函数之外的值。
-
您需要了解事件循环和异步在节点中的工作方式。您需要从承诺中设置类似 var response = await getResponse() 的内容。
标签: node.js variables callback scope request