Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在函数chrome.extension.sendRequest之外传递对象_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 如何在函数chrome.extension.sendRequest之外传递对象

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)

我试图从下面得到响应,并在函数外部使用。响应是一个对象,特别是来自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);
这两个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中完成了所有操作。