节点js返回函数不返回数据

时间:2016-07-12 07:51:25

标签: javascript

嗨所以我刚刚创建了这个函数并且我正在尝试返回数据但是由于某种原因它不会返回数据但函数被调用,因为我试过控制台在执行函数时记录它它工作正常但是它只是在我想使用函数

时返回数据

正如您所看到的,我正在使用函数尝试将返回的数据放入数组

谢谢大家。

a.push(methods.UserInfo(id));

这是我正在使用的所有代码

methods.UserDatas = ((client, json)=> {
    let a = [];
    if (json.Params.length > 0) {
        json.Params.forEach((id)=>{
            if (id) {
                a.push(methods.UserInfo(id));
            }
        });
        let cmd = {
            'Cmd': 'GetUserInfo',
            'userinfo': a
        };
        packet.send(client, JSON.stringify(cmd));
    }
});

methods.UserInfo = ((id)=> {
    sql.query('SELECT * FROM users WHERE ?',[{id:id}], (err, row)=>{
        if (err) {
            throw err;
        } else {
            if (row.length > 0) {
                let playerData = {};
                playerData.userid = row[0].id;
                playerData.strGender = row[0].Gender;
                playerData.Username = row[0].Username;
                let items = {};
                sql.query('SELECT * FROM users_items WHERE ? AND equipped=1',[{userid:id}],(err,rows) => {
                    if (err) {
                        throw err;
                    } else {
                        if (rows.length > 0) {
                            for (var i =0; i< rows.length; i++) {
                                let item = DBData.items.get(parseInt(rows[i].itemid));
                                items[rows[i].equipment] = {
                                    'ItemID': item.id,
                                    'File':item.File,
                                };
                            }
                        }
                        playerData["equipment"] = items;
                        return playerData;
                    }
                });
            }
        }
    });
});

1 个答案:

答案 0 :(得分:1)

异步功能(例如

sql.query('SQL', [{PARAM:VALUE}], (ERR, RESULT) => { CODE }

)不会返回作为常规函数:例如,您可以使用promise s(请参阅here)。

同样请注意, sync 函数调用 a 同步函数,不会同步返回来自 a 同步函数的值...