未返回正确的值

你好,我有两个函数,一个返回一个值

function AddPlayer(steamID, source)
    for i,p in ipairs(players) do
        if steamID == p[1] then
            players[i] = {p[1], p[2], source}
            return
        end
    end

    local initialPoints = GetInitialPoints(steamID)
    print(initialPoints)
    table.insert(players, {steamID, initialPoints, source})
end

function GetInitialPoints(steamID)
    local points = 0
    print(steamID)
    MySQL.Async.fetchAll("Select priority FROM queue where `identifier`= @identifier",
    {
        ['@identifier'] = steamID,
    },
    function(resp)
        points = resp[1].priority
        print(points)
    end)
    return points
end

所以打印的实际值是正确的(10,000),但是在函数AddPlayer的返回值中,当我打印初始点数时,它打印0,这是我声明变量时设置的值,但实际上应该是我设置的点数值。

点赞
用户1847592
用户1847592
    for i,p in ipairs(players) do
        if steamID == p[1] then
            players[i] = {p[1], p[2], source}
            return
        end
    end
    print(steamID)
    MySQL.Async.fetchAll(
        "Select priority FROM queue where `identifier`= @identifier",
        {
            ['@identifier'] = steamID,
        },
        function(resp)
            local initialPoints = resp[1].priority
            print(initialPoints)
            table.insert(players, {steamID, initialPoints, source})
        end
    )
end

AddPlayer 函数用于将玩家添加到游戏中,接受两个参数分别是steamIDsource。该函数首先会在已有玩家列表(players)中查找是否存在相同的steamID,如果有,将会更新该玩家的source,然后函数结束。如果没有找到对应的玩家,则会执行 MySQL 查询,并根据查询结果将新玩家添加到players列表中。

2020-02-01 21:41:30