簡體   English   中英

在主函數的回調中獲取返回值

[英]Get a returned value in a callback on main function

我正在使用HTML5和網絡數據庫存儲開發應用程序。

我想在表中插入一行並返回使用以下方法創建的新ID(表的主鍵):

function insertIntoTable(title, text, sketchFileName, categoryId)
{
    var db = window.openDatabase('xxx', '1.0', 'xxx database', 5*1024*1024);
    var returnedId = -1;
    db.transaction(
        function (tx) {
            if (sketchFileName == '')
            {
                tx.executeSql('INSERT INTO TableXXX (title, content, created, categoryID) VALUES (?, ?, ?, ?)', 
                            [title, text, Date.now(), categoryId], 
                            function (transaction, resultSet) {
                                if (resultSet.rowsAffected) {
                                    returnedId = resultSet.insertId;
                                }
                            }, handleSQLError);
            }
        }, handleSQLError);
    );

    return returnedId;
}

但是我總是得到-1。 我在使用Safari開發模式的表格中看到了新行。

有什么建議嗎?

如果將returnId的聲明移到函數外部,然后調用該函數兩次,您將看到返回的值是第一個插入的ID,因此已對其進行了設置。 看起來好像是因為數據庫是異步的,所以在函數返回之后就設置了id,這很有意義。

根據W3C規范,應該有一個openDatabaseSync可以代替openDatabase使用,但我無法在Safari(5.0.1)中使用它。

顯然,我不知道您所發布的代碼片段之外的代碼是什么樣子,但是希望您能夠對其進行重構,因此您無需返回值,而是可以在回調中管理返回的id 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM