我有一个函数,它通过chrome.storage.sync.get
检查存储的值,并在存在所述存储值时插入一个CSS文件。
我意识到chrome.storage.sync.get
是一个异步函数,并且返回值没有按预期传回makeAggressive()
函数。但是,我不知道如何编写此代码以将if (result == 'aggressive')
的结果传递给makeAggressive()
。
如何检索存储的值,检查其值并将结果返回给调用函数?
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;
}
});
}
答案 0 :(得分:2)
只需将回调传递给异步函数即可 异步活动完成后,应调用回调。
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();
}
});
}