Javascript 返回未定义的函数似乎在返回结果之前正在运行console.log?需要承诺吗?
我在另一个文件中有一个函数,我想获取该函数的响应,然后在退出控制器函数之前对该响应执行一些操作 以下是所需文件中的代码:Javascript 返回未定义的函数似乎在返回结果之前正在运行console.log?需要承诺吗?,javascript,node.js,express,npm-request,Javascript,Node.js,Express,Npm Request,我在另一个文件中有一个函数,我想获取该函数的响应,然后在退出控制器函数之前对该响应执行一些操作 以下是所需文件中的代码: exports.counter = function(companyID) { options.json.companyID = companyID request.post('/monitorCounter', options, (error, response, body) => { if (error) {
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')。计数器
这就是我在主控制器文件中测试/使用它的方式
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)
});
});
}
我猜request.post是从图书馆来的?他们的医生说这是承诺还是可以观察到?这绝对是一件好事。因此,您可能需要有(promise)之类的有效文件。然后((val)=>{console.log(val)})@andrewf他用
npm request
标记了这个问题,这应该就是这个库。@andrewf是的,它是Node.js中使用的一个库。我在那个文档中没有看到任何关于JSON选项的内容,或者调用request.post()
有3个参数。@Barmar就是这样是的,你可以按照我的方式调用请求,我已经用了一段时间了。在这一个应用程序中,我还有大约60个这样做的实例。请在30秒内查看我的新答案,以查看我提出的解决方案