gpt4 book ai didi

javascript - Node.js Http.Request 回调 - 无法将数据传递给父函数

转载 作者:行者123 更新时间:2023-11-30 16:31:38 25 4
gpt4 key购买 nike

我对 Node 和 Javascript 还很陌生,我正在为我的第一个 Node 模块而苦苦挣扎。我想要做的是为特定的 API 调用导出函数,我想重用我的 https.request 函数,而不是在每个函数中复制代码。出于某种原因,我无法全神贯注于如何将数据传递回我的原始函数。这是一个简化版本 - listStuff 函数将是处理各种 api 请求操作的众多函数之一。

'use strict';
const https = require('https');
const _ = require('underscore');
const hostStr = 'api.server.net';

function listStuff(){
var pathStr = '/release/api/stuff';
_apiCall(pathStr);
//Would like to handle the https response data here
};

function _apiCall(pathStr){
var options = {
host: hostStr,
path: pathStr
};

var req = https.get(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);

var responseString = '';

res.on('data', function(d){
responseString += d;
});

res.on('end', function(){
var responseObject = JSON.parse(responseString);
});
});

req.end();

req.on('error', function(e){
console.log(e);
});
};

module.exports = {
listStuff: listStuff
};

最佳答案

希望这对您有所帮助。在 apiCall 函数中注册回调,然后检查回调参数以进行错误处理。然后,只需确保在您想要结束函数调用时返回回调(无论是在结束时还是在错误处理时)。

       function listStuff(){
var pathStr = '/release/api/stuff';
_apiCall(pathStr, function(err, data) {
if (err) // handle err
//handle data.
});
};

function _apiCall(pathStr, callback){
var options = {
host: hostStr,
path: pathStr
};

var req = https.get(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);

var responseString = '';

res.on('data', function(d){
responseString += d;
});

res.on('end', function(){
var responseObject = JSON.parse(responseString);
return callback(null, responseObject);
});
});

req.end();

req.on('error', function(e){
console.log(e);
return callback(e);
});
};

关于javascript - Node.js Http.Request 回调 - 无法将数据传递给父函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com