JavaScript - 由异步函数引起的未定义变量

时间:2018-04-04 06:23:19

标签: javascript function asynchronous callback promise

我对此很新,所以我真的希望有人可以帮助我。

我的斗争是一些“未定义的”变量,我相信这是由于异步函数。

我的代码的简化版本:

document.getElementById("applyButton").addEventListener("click", () => {

    // Variables from input form
    var nameInput = document.getElementById("nameID").value;
    var typeInput = document.getElementById("typeID").value;

    // Database lookups
    var thisNameID = getNameID(nameInput);
    var thisTypeID = getTypeID(typeInput);  

    // Some code with the variables
    var newQuery = "INSERT INTO myTable (myNameID, myTypeID) VALUES ('" + thisNameID + "', '" + thisTypeID + "');";    
    console.log("Query: ", newQuery);

});

function getNameID (input){
    // do some database lookup
    return returnedNameID;
};

function getTypeID (input){
    // do some database lookup
    return returnedTypeID;
};

在控制台中我得到:

Query: INSERT INTO myTable (myNameID, myTypeID) VALUES ('undefined', 'undefined');

如何确保我等待功能回复?我一直在研究Promise和Callbacks以及其他类似的问题,但必须承认我很困惑,并且无法解决如何在我的代码中实现它。

如果有人能通过承诺或类似的解决方案向我展示实施。

非常感谢提前!

0 个答案:

没有答案