首页 > 解决方案 > 按名称运行节点函数

问题描述

我正在尝试从数组中调用函数。第一部分在我可以调用函数的地方工作。但无法获得返回值。

var Handler = {};

async function iamin(field) {
    validations = ["abc", "def"];
    validations.forEach(function (element) {
        console.log(element);
       abc = Handler[element].call(field);
        return abc
    });
    return false;
}

Handler.abc = async function (field) {
    return 1;
}

Handler.def = async function (field) {
    return 2;
}

module.exports = {
    iamin
};

我收到错误(节点:48585)UnhandledPromiseRejectionWarning:错误:协议错误(Input.dispatchKeyEvent):目标已关闭。

标签: node.jspuppeteer

解决方案


abc = Handler[element].call(field);这将存储调用函数的结果。在这种情况下,这是一个承诺。

因此,如果您只想返回函数,则需要单独存储该函数:

var Handler = {};

async function iamin(field) {
    validations = ["abc", "def"];
    return validations.map(async function (element) {
        const abc = Handler[element];
        const value = await abc.call(field);
        // console.log(value);
        console.log(abc);
        return abc;
    });
}

Handler.abc = async function (field) {
    return 1;
}

Handler.def = async function (field) {
    return 2;
}
iamin(1).then( res => console.log(res));


module.exports = {
    iamin
};

推荐阅读