node.js - Nodejs函数将字符串返回到主程序
问题描述
我在将 nodejs 代码转换为返回字符串的函数时遇到问题,以便稍后在代码中使用该字符串。
当我把它变成一个函数时,我没有任何返回。
我不确定这是否是回调问题,因为我认为我应该返回未定义。
不确定是什么问题。
var request = require('request-promise');
let authtoken;
function remedyLogin() {
var uri = 'https://test-XXX.com';
var _include_headers = function(body, response, resolveWithFullResponse) {
return {'headers': response.headers, 'data': body};
};
var options = {
method: 'POST',
uri: uri,
json: true,
transform: _include_headers,
body: { "username":"XXXXXXX", "password":"XXXXXXXXXXXXXx"
},
}
request(options)
.then(function (parsedBody) {
console.log("post success");
})
.catch(function (err) {
console.log("post failed");
});
return request(options)
.then(function(response) {
var result = JSON.stringify(response.headers);
var res = result.match(/{\"authentication-token":".*","content-type/);
stringgy = res[0].substring(25);
authtoken = stringgy.substring(0, stringgy.length-17);
console.log(authtoken);
return authtoken;
});
}
var foo = RemedyLogin;
console.log(foo);
下面的代码工作正常,我返回了一个如下的验证码。
post success
/DwG7gAAAAAAAAAA4RZPA8x0Ny3ztp0ImAAk8M0bCLDkUzwA0HNG8CSAxtws3QQu353Gdb3/stXd0o
PMgh7Wgaq99rUOa1whKC0TOfFCtD8c9SZHWlyX9Do7CxdffOeGtMphw+EiC8R/JEnPxJJUq/g+eUlg
bDcB2S0w2w2XGNlJ/3HNM4rIpbn+me9EK9xNMkI2F+WrzkWMnQaUWQn/VTi6l84eQR1CuPdDrn6r4t
MADTFlWYpFL7maqqYAmEzYBahIQ+uRwautvBVwyQJSstV8xTbVso2bhe7VI+ms/bI0BR4yVaJQzg/9
rAxj2QbAWsRowT3p22y3BmWzkXpgGT2QcU6SKr2/PyuWf1Lo9xMTtgZujofA+iuPwOv0zAHL9wg5qY
AbcQYS9RKSj1FltMIMgsvKVJlXhIKAQLih4kVaPklMhF/x4qYg5q8GuDbm0IyicrxJFPISpe2ba8GI
MqurgGUsdiaqNrRSXjevbuyeuJ7nA+TLSGUG0hYxg6OT9CNVfJ6It8hWPvD/OtFhAncVgA
这是代码。
var request = require('request-promise');
var uri = 'https://test-orchestrator.lmig.com/baocdp/rest/login';
var _include_headers = function(body, response, resolveWithFullResponse) {
return {'headers': response.headers, 'data': body};
};
var options = {
method: 'POST',
uri: uri,
json: true,
transform: _include_headers,
body: { "username":"sahst_trap_parser_ao", "password":"cgSW68eJexsPet"
},
}
request(options)
.then(function (parsedBody) {
console.log("post success");
})
.catch(function (err) {
console.log("post failed");
});
return request(options)
.then(function(response) {
var result = JSON.stringify(response.headers);
var res = result.match(/{\"authentication-token":".*","content-type/);
stringgy = res[0].substring(25);
var authtoken = stringgy.substring(0, stringgy.length-17);
console.log(authtoken);
});
解决方案
看起来您错误地调用了remediateLogin 函数。尝试更改此代码:
var foo = RemedyLogin;
console.log(foo);
至
remedyLogin().then(foo => console.log(foo));
推荐阅读
- java - 如何在 Exoplayer 中编写重复模式?
- javascript - 当我尝试访问 js 文件时,Node JS 出现 404 错误
- node.js - 使用 TypeOrm 执行原始 PostgreSQL 查询时挂起
- java - a[k++] = l[i++] 表示法是什么意思
- php - 无法从 Laravel 的下拉列表中保存表列值
- c - 将内存重新分配到空引用
- typescript - 您如何在打字稿中的类型测试假中使用开玩笑的模拟?
- php - 在 MySQL 中保持零领先
- javascript - 开启深色模式时,我的基于 HTML 的操作系统的应用程序在深色和浅色之间闪烁
- node.js - 异步功能,但等待在 NodeJS 中不起作用