从nodejs函数返回值

时间:2018-10-18 10:03:07

标签: node.js

请帮帮我 我有一个剧本

export    function GetKey(inn, res) {
    try {
        const body = {
            7709798583: {
                name: 'someName',
                key: '123'
            },
            7718266352: {
                name: 'otherName',
                key: '123'
            }
        };
    res(body[inn]['key']);

    } catch (err) {

       res('0000000000000');
    }
};

在其他文件中,我尝试使用此功能

GetKey(param, (name) => {
            console.log(name);
        });

没关系。但是我需要将回调返回到参数。怎么样?

 var param =  GetKey(param, (name) => {
            return name;
        });

不正确并返回未定义

1 个答案:

答案 0 :(得分:4)

这不是回调的工作方式;不过,您可以使用Promise和async-await语法来伪造该行为。

如果要像编写代码一样编写代码,则需要将其余逻辑放在函数中,然后将其直接传递给回调函数:

var param = ''

var allYourLogic = name => {
    // YOUR LOGIC
    param = name
}

GetKey(param, allYourLogic);

或者您可以简单地内联逻辑:

GetKey(param, (name) => {
    param = name
    // YOUR LOGIC
});

使用Promise语法,外观如下:

new Promise(resolve => {
    GetKey(param, resolve)
})
.then(name => {
    param = name
    // YOUR LOGIC
})

最后,使用异步等待方法:

var param = (
    await new Promise(resolve => {
        GetKey(param, resolve)
    })
)

但是,实际上,您似乎在做一些奇怪的事情,这就是为什么您首先遇到此问题的原因。

一旦使用回调,您的整个应用程序将表现为异步状态,因为回调不会立即在Node.js的事件循环中执行。相反,您当前所在的函数将在GetKey函数调用回调方法之前完成执行。

相关问题