【问题标题】:Dynamically create async function (error)动态创建异步函数(错误)
【发布时间】:2021-03-31 22:12:30
【问题描述】:

我正在尝试编写 asyncfunction 但我收到错误(await 仅在 async 函数中有效),问题是:可以这样做吗?

const run_qry = require('./sequelize');

app.post('/resultdata', (req, res) => {

    const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;

    let test001 = new AsyncFunction('dat', `{
        var mySet  = new Set();
        var arrObj = [];
        
        // QUERY TO DATABASE
        let queryDB = await run_qry.query('select * from public.list_users()');
        
       // LOOP DATA
        queryDB.forEach((element, index, array) => {
            var row = [];

            row.push({vareg:  element.val, trans_id: element.id, til_scrip: 1});
            row.push({vareg:  element.val, trans_id: element.id, til_scrip: 1});
            mySet.add(row);
        });

        // NEW ARRAY
        for (let rs of mySet) {
            const objReg = new Object();

            for (let rs_child of rs) {
                objReg["col" + rs_child.vareg]           = rs_child.vareg;
                objReg["col" + rs_child.vareg + "_type"] = rs_child.til_scrip;
            };

            arrObj.push(objReg);
        };
        
        //RETURNING NEW ARRAY OBJ
        return arrObj;
    };`);
    
    test001(null).then(x => { res.send(x); });
});

我正在使用 nodejs 和 express,我将非常感谢任何帮助或任何选项。

错误:

SyntaxError: await is only valid in async function
    at new Function (<anonymous>)

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    await 仅在 async 函数中起作用。将您的箭头函数更改为箭头异步函数。

    改变这一行

    app.post('/resultdata', (req, res) => {
    

    到这个

    app.post('/resultdata', async (req, res) => {
    

    【讨论】:

    • 感谢您的帮助,我是 javascript 的初学者。现在它向我显示另一个错误:(node:20580) UnhandledPromiseRejectionWarning: ReferenceError: run_qry is not defined 哪一部分出了问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多