javascript - 返回未定义的函数似乎在返回结果之前正在运行 console.log?需要承诺吗?
问题描述
我在另一个文件中有一个函数,我想得到它的响应,然后在退出我的控制器函数之前对该响应做一些事情。
以下是所需文件中的代码:
exports.counter = function(companyID) {
options.json.companyID = companyID
request.post('/monitorCounter', options, (error, response, body) => {
if (error) {
console.log(error);
throw error;
}
if(body.success == true) return true
});
}
这是我需要文件/功能的方式
const monitorCounter = require('../controllers/counter').counter
然后这就是我试图在我的主控制器文件中测试/使用它的方式
let valid = monitorCounter(companyID)
console.log(`Valid: ${valid}`)
我期待它返回 true (通过 console.log 测试并且功能按预期工作),但我得到了未定义。
我在想我需要一个承诺,但不确定如何将它作为一个不同的文件来做到这一点,而且我还没有完全更新承诺(目前正在处理)
解决方案
我设法弄清楚如何实现我需要的承诺,我之前尝试过但没有“返回”承诺并且调用解决/拒绝错误。以下是此问题的工作代码。
exports.counter = function(companyID) {
return new Promise((resolve, reject) => {
options.json.companyID = companyID
request.post('/monitorCounter', options, (error, response, body) => {
if (error) {
console.log(error);
throw error;
}
if(body.success == true) resolve(true)
if(body.success != true) reject(false)
});
});
}
推荐阅读
- vba - 如何在访问表单加载后运行 vba 宏?
- python - 如何使用 scipy.curve_fit 将 Python 中的实验数据拟合到定义区域有限的反三角函数?
- java - JavaFX:TableView 使用 ObservableList 中的特定数据填充列
- javascript - 服务器节点代理中未发生 api 调用
- c# - 表示字典
在 .NET Core 环境变量中 - server - 我服务器的 crontab 中的这个条目有什么作用?
- c++ - 如何从派生类实例调用父类重载函数?
- android - 我应该为 ConstraintLayout 元素使用约束或大小属性吗?
- kubernetes - kubernetes networkpolicy namespaceSelector 在命名空间没有标签时选择
- c# - ASP.net CRUD WCF AJAX 后调用方法不允许