从Javascript中的async函数获取返回值

Get return value from async function in Javascript

本文关键字:获取 返回值 函数 async Javascript 中的      更新时间:2023-09-26

我有一个函数,它通过chrome.storage.sync.get检查存储值,并在存在所述存储值时插入CSS文件。

我意识到chrome.storage.sync.get是一个异步函数,返回值并没有像预期的那样传递回makeAggressive()函数。然而,我不知道如何编写此代码,以获得传递给makeAggressive()if (result == 'aggressive')的结果。

如何检索存储的值,检查其值并将结果返回给调用函数?

chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
    if (info.status == 'complete') applyCSS(tab);
});
function applyCSS(tab) {
    var tabUrl = tab.url;
    if (makeAggressive()) {
        chrome.tabs.insertCSS(tab.id, {
            file: "aggressive.css"
        });
    }
}
function makeAggressive() {
    chrome.storage.sync.get(function(items) {
        var result = items.intensityLevel;
        if (result == 'aggressive') {
            return true;
        }
  });
}

只需将回调传递到异步函数中
异步活动完成后,应调用回调。

async_function(function() {
    // do something after async_function completes and invokes this callback
});
function async_function(callback) {
    something_async(function(result) {
        callback(result);
    });
}

在您的情况下:

function applyCSS(tab) {
    var tabUrl = tab.url;
    makeAggressive(function() {
        chrome.tabs.insertCSS(tab.id, {
            file: "aggressive.css"
        });
    });
}
function makeAggressive(callback) {
    chrome.storage.sync.get(function(items) {
        var result = items.intensityLevel;
        if (result == 'aggressive') {
            callback();
        }
    });
}