javascript - 如何使用节点 js 存储来自 https 响应的数据?
问题描述
我创建了一个调用 http/https 链接的服务。我能够成功调用 http/https 链接,但我无法存储链接返回的输出。我知道由于异步操作,这非常困难。如果有任何方法可以存储检索到的数据,请提供帮助
下面是我的代码。我尝试创建一个全局变量,然后存储检索到的数据,但它不起作用。
function apiCall(url, protocol) {
function externalApi(url, callback) {
try {
var https = $.require(protocol);
var request = https.request(url, function (response) {
var str = '';
var statusCode = response.statusCode;
var headers = response.headers;
response.on('data', function (data) {
str += data;
});
response.on('end', function () {
console.log("Data is " + str);
console.log("Status Code is " + statusCode);
console.log("Header is " + JSON.stringify(headers));
callback(str, statusCode);
});
});
request.on('error', function (e) {
console.log('Problem with request: ' + e.message);
console.log('Problem with request: ' + e);
});
request.end();
} catch (err) {
console.log("the error is" + err);
}
}
var status = function (data, statusCode) {
var callStatus = {};
if (statusCode == 200) {
callStatus.retrievedData = data;
callStatus.statusCode = statusCode;
callStatus.MESSAGE = "Successfully called";
}
console.log(callStatus);
};
externalApi(url, status);
}
预期的结果是返回检索到的数据或将检索到的数据存储在某个全局变量中的函数。现在我可以通过控制台记录它。请帮忙
编辑:尝试将检索到的数据存储到回调中的变量中
function apiCall(url, protocol) {
function externalApi(url, callback) {
var output = '';
..........
........
......
console.log("Header is " + JSON.stringify(headers));
output = callback(str, statusCode);
});
});
...................
....................
return output;
...............
...............
var result = externalApi(url, status);
console.log("The result is " + result);
}
但结果值为空。这是由于异步行为。如何解决这个问题。理想情况下,我希望函数 apiCall 返回结果。像下面的东西
var result = externalApi(url, status);
return result;
}
解决方案
推荐阅读
- javascript - 登录后无法等待应用程序加载
- java - 此正则表达式在黄瓜中失败,但在正则表达式工具中传递
- angular7 - ngrx-effects 将类型错误视为不可分配
- php - Laravel orderby 查询具有不同的
- php - 检查字符串是否包含 " 或 '
- c# - div 在 asp.net SignalR 中不更新
- r - R数据中的日期到月份
- c# - 访问另一个类中列表的元素
- android - Delphi Android 从我的应用程序中卸载其他应用程序?
- scala - com.lightbend.lagom.internal.broker.kafka.KafkaSubscriberActor