Javascript 从本地存储检索数据
我试图从localStorage中检索一个正在工作的字符串,但我不确定执行顺序。也许我错过了什么Javascript 从本地存储检索数据,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我试图从localStorage中检索一个正在工作的字符串,但我不确定执行顺序。也许我错过了什么 //content_script.js function getSize(){ chrome.extension.sendMessage({method: "getSize"}, function(response){ size = response.sizeIs; }); alert(size); return size; } 及 警报信息包括
//content_script.js
function getSize(){
chrome.extension.sendMessage({method: "getSize"}, function(response){
size = response.sizeIs;
});
alert(size);
return size;
}
及
警报信息包括:
undefined
Large
分别
所以我想我的问题是,为什么变量在sendMessage函数内部工作,而不是在外部工作?这是因为在您的示例中
警报(大小)代码>在size=response.sizeIs之前执行代码>
应该是这样的:
function getSize(callback){
chrome.extension.sendMessage({method: "getSize"}, function(response){
size = response.sizeIs;
callback(size);
});
}
这样说吧:
getSize(function(size) {
alert(size);
});
而不是:
size = getSize();
alert(size);
chrome.extension.sendMessage
是一种异步(非阻塞)方法,这意味着您无法立即获得结果。您必须传递回调函数并在内部处理结果
这就像setTimeout
函数一样。尝试执行以下代码:
setTimeout(function() {
console.log('test 1');
}, 100);
console.log('test 2');
您将进入控制台:
test 2
test 1
在这种情况下,测试2
立即显示,而测试1
在100ms后显示。异步函数/方法就是这样工作的
您可以阅读有关异步函数的更多信息
test 2
test 1