Javascript 如何在函数chrome.extension.sendRequest之外传递对象
我试图从下面得到响应,并在函数外部使用。响应是一个对象,特别是来自localStorage的对象,有50个项Javascript 如何在函数chrome.extension.sendRequest之外传递对象,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我试图从下面得到响应,并在函数外部使用。响应是一个对象,特别是来自localStorage的对象,有50个项 chrome.extension.sendRequest(options, function(response){ console.log('answer back is ' + response.newone199); console.log(response.newone); var globalvar = response; }); console.log(globalvar)
chrome.extension.sendRequest(options, function(response){
console.log('answer back is ' + response.newone199);
console.log(response.newone);
var globalvar = response;
});
console.log(globalvar);
这两个console.log都提供了正确的答案-但是如果移动到函数之外,我会得到未定义的结果
我尝试过返回全局变量,但它也不起作用-我读到你不能在函数外传递一个对象,除非你把它放在另一个函数内?我试过了,但没能成功
有人能给我指出正确的方向吗?基于此,我结束了对整个函数的包装,如下所示:
function doSomething(){
chrome.extension.sendRequest(options, function(response){
var thing = response.data;
//Do something with our variable.
//The rest of the function goes here before the next bracket
});
}
我知道这不是最优雅的解决方案,但它对我很有效。在上面的代码中,假设您在函数范围之外声明了globalvar:
1. var globalvar;
2. chrome.extension.sendRequest(options, function(response){
3. console.log('answer back is ' + response.newone199);
4. console.log(response.newone);
5. globalvar = response;
6. });
7. console.log(globalvar);
那么执行顺序将是:1,2,7,…,3,4,6,。。。
很好,如果您没有定义,我将尝试一下-我只是在sendRequest中完成了所有操作。