返回未定义的函数在返回结果之前似乎 console.log 是 运行?需要承诺吗?
Function returning undefined seems like console.log is running before result is returned? Promise needed?
我在另一个文件中有一个函数,我想得到它的响应,然后在退出我的控制器函数之前对该响应做一些事情。
这是所需文件中的代码:
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
});
}
这是我要求 file/function
const monitorCounter = require('../controllers/counter').counter
这就是我在主控制器文件中尝试 test/use 的方式
let valid = monitorCounter(companyID)
console.log(`Valid: ${valid}`)
我期望它 return 为真(通过 console.log 测试并且功能按预期工作),但我变得不确定。
我在想我需要一个承诺,但不确定如何将它作为一个不同的文件来实现,而且我也没有完全更新承诺(目前正在处理)
我设法弄清楚如何实现我需要的承诺,我之前尝试过但不是'return' promose 而是调用 resolve/reject 错误。以下是此问题的工作代码。
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)
});
});
}
我在另一个文件中有一个函数,我想得到它的响应,然后在退出我的控制器函数之前对该响应做一些事情。
这是所需文件中的代码:
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
});
}
这是我要求 file/function
const monitorCounter = require('../controllers/counter').counter
这就是我在主控制器文件中尝试 test/use 的方式
let valid = monitorCounter(companyID)
console.log(`Valid: ${valid}`)
我期望它 return 为真(通过 console.log 测试并且功能按预期工作),但我变得不确定。
我在想我需要一个承诺,但不确定如何将它作为一个不同的文件来实现,而且我也没有完全更新承诺(目前正在处理)
我设法弄清楚如何实现我需要的承诺,我之前尝试过但不是'return' promose 而是调用 resolve/reject 错误。以下是此问题的工作代码。
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)
});
});
}