node.js - 如何在Nodejs回调函数之外提取变量的值
问题描述
我无法在回调代码之外获取响应的值。它在外部返回未定义,而在回调中它给出了正确的结果。
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
解决方案
function doCall(urlString) {
return new Promise((resolve, reject) => {
request.get(
urlString,
null,
null,
(err, data, result) => {
if (error) reject(error);
var statusCode = result.statusCode;
resolve(data);
});
});
}
async function myBackEndLogic() {
try {
const result = await doCall(urlString);
console.log(result);
//return JSON.parse(result) if you want
} catch (error) {
console.error('ERROR:');
console.error(error);
}
}
myBackEndLogic();
推荐阅读
- javascript - Onerror 和 onload 事件不会在反应的脚本元素中触发
- amazon-web-services - AWS EMR 与 Glue 目录,明确指定 catalogId
- google-bigquery - 我想在插入 Bigquery 表时生成唯一 ID。
- mysql - 获取 MySQL 中受影响的行数
- lda - 如何用槌预测一批文档的主题
- sql-server - 在数据库表中创建多个地址
- amazon-web-services - AWS Server Migration Service Hyper-V 连接器运行状况不佳
- r - 当 summary=F 且字符串包含“&”时,Stargazer 将字符字段拆分为列
- jquery - 如何在不可见的div中使用未选中的复选框制作可搜索列表
- php - Symfony 4,Postgres - 运行学说命令时参数“client_encoding”的值无效:“utf8mb4”