返回未定义的函数似乎在返回结果之前正在运行console.log?需要承诺吗?

时间:2019-07-02 00:33:12

标签: javascript node.js express npm-request

我在另一个文件中有一个函数,该函数要获取响应,然后在退出控制器函数之前对该响应进行处理。

以下是所需文件中的代码:

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测试,并且功能按预期工作),但是我变得不确定。

我当时以为我需要一个承诺,但不确定如何将它作为一个不同的文件来实现,而且我也还没有完全兑现承诺(正在处理该承诺)

1 个答案:

答案 0 :(得分:2)

我设法弄清楚我所需要的诺言,我曾经尝试过,但没有“退回”诺言,而是称解决/拒绝是错误的。以下是此问题的工作代码。

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)
        });    
    });
}