异步运行后立即运行功能

时间:2018-08-29 22:47:26

标签: javascript

我想存储chrome.storage个ID。我正在使用INSERT_OR_REMOVE("blocked",12)从数据库中添加或删除12。问题是它正在异步工作。我想做的就是在之后使用colorize函数。我该怎么存档?

function INSERT_OR_REMOVE(table, id) {
    if (isNaN(id))
        return;

    var parsed = parseInt(id);

    chrome.storage.local.get(table, function (data) {
        if (data[table] == null)
            data[table] = [];

        if (!data[table].includes(id))
            data[table].push(id);
        else
            data[table].remByVal(id);

        chrome.storage.local.set(data);
    });
}

function colorize() {
    chrome.storage.local.get("blocked", function (data) {
        var buttons = $("div.base-btn").closest("table");
        for (i = 0; i < buttons.length; i++) { 
            var id = $(buttons[i]).attr("data-id");

            if (data["blocked"].includes(id))
                $(buttons[i]).parent().addClass('blocked');
            else
                $(buttons[i]).parent().removeClass('blocked');
        }
    });
}

1 个答案:

答案 0 :(得分:0)

Chrome StorageArea.set()接受在成功/失败时运行的回调函数。它与您传递给chrome.storage.local.get(table, callbackFunction)

的回调相同

您只需要添加colorize作为要在完成设置时运行的回调:

chrome.storage.local.set(data, colorize)