【发布时间】:2022-01-19 15:31:14
【问题描述】:
在我发出成功的 http 请求(状态码:200)后,我需要配置我的端点的基本 url。
我已经编写了下面的函数,但它没有像我预期的那样工作......它总是返回undefined。我知道这是关于承诺的事情,但我没有太多经验。
const get = require('./functions/functionGET');
function geturl() {
var baseip;
get(
"username",
"password",
"http://**.***.**.35:8048/TESTDEV02/ODataV4/Company"
)
.then((response) => {
if (response.statusCode === 200) {
baseip = "http://**.***.**.35:8048/TESTDEV02/ODataV4/Company('*******')";
} else {
get(
"username",
"password",
"http://**.***.**.36:8048/TESTDEV02/ODataV4/Company"
).then((response) => {
if (response.statusCode === 200) {
baseip = "http://**.***.**.36:8048/TESTDEV02/ODataV4/Company('*******')";
} else {
get(
"username",
"password",
"http://**.***.**.37:8048/TESTDEV02/ODataV4/Company"
).then((response) => {
if (response.statusCode === 200) {
baseip = "http://**.***.**.37:8048/TESTDEV02/ODataV4/Company('*******')";
}
});
}
});
}
})
console.log(baseip)
return baseip;
}
module.exports = geturl();
编辑
这是 get() 函数:
const { promisify } = require('util');
var httpntlm = require('httpntlm');
const Logger = require('../../services/error_logger')
const logger = new Logger('app')
module.exports = function (username, password, url) {
var httpntlmGetAsync = promisify(httpntlm.get);
return httpntlmGetAsync({
url: url,
username: username,
password: password,
workstation: '',
domain: '',
headers: {
'Access-Control-Allow-Origin': '*',
'Accept': '*/*',
'Content-Type': 'application/json; charset=utf-8'
}
})
.catch(err => logger.error(`URL: ${url}, Error: ${err}`))
then(response => {
return response.body
});
};
【问题讨论】: