Javascript 返回变量-未定义

Javascript 返回变量-未定义,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在我的内容脚本中阅读Chrome的扩展localStorage。如果我将变量记录到控制台,一切都会正常工作。如果我想提醒它,它会说变量未定义 var data666; chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) { console.log(response.data); // works perfectly data666 = respon

我正在我的内容脚本中阅读Chrome的扩展localStorage。如果我将变量记录到控制台,一切都会正常工作。如果我想提醒它,它会说变量未定义

var data666;

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) {
  console.log(response.data); // works perfectly
  data666 = response.data;
});

alert(data666); // does not work

编辑:我需要在异步函数之外使用变量(本例中为data666)。

注意,
sendRequest
是一个异步函数,在
sendRequest
执行回调函数之前,不会设置数据值

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) {
  console.log(response.data); // works perfectly
  data666 = response.data;
  alert(data666);
});
因此,需要将alert语句移动到回调函数中

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) {
  console.log(response.data); // works perfectly
  data666 = response.data;
  alert(data666);
});

请注意,
sendRequest
是一个异步函数,在
sendRequest
执行回调函数之前,不会设置数据的值

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) {
  console.log(response.data); // works perfectly
  data666 = response.data;
  alert(data666);
});
因此,需要将alert语句移动到回调函数中

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) {
  console.log(response.data); // works perfectly
  data666 = response.data;
  alert(data666);
});

只要把你需要的东西放在一个函数中,然后从回调函数中调用该函数。只要把你需要的东西放在一个函数中,然后从回调函数中调用该函数。谢谢。我已经试过了,但是我需要在函数外使用变量。不,恐怕你必须在回调函数内包装以下过程。如果你不想让它难看,那就看一看。我相信它会派上用场的。谢谢你的努力,乔,但这看起来太过分了。您是否知道,是否允许在另一个函数中使用异步函数?嵌套异步函数很常见,所以请习惯:)谢谢。我已经试过了,但是我需要在函数外使用变量。不,恐怕你必须在回调函数内包装以下过程。如果你不想让它难看,那就看一看。我相信它会派上用场的。谢谢你的努力,乔,但这看起来太过分了。您是否知道,是否允许在另一个函数中使用异步函数?常见的是嵌套异步函数,所以要习惯它:)