javascript - 这个 JavaScript 中发生了什么,我该如何修复它?

标签 javascript google-chrome-extension

我有一个 chrome 扩展,其中有一个要执行的 javascript 文件。 javascript 文件对 background.html 进行此调用:

action.js

var action = "";
chrome.extension.sendRequest({method: "getLocalStorage", key: "action"},
  function(response) {
     alert(response.data);
     action = response.data;
 });
alert('action:'+action);

background.html:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "getLocalStorage")
  sendResponse({data: localStorage[request.key]});
else
  sendResponse({});

我得到的行为是一个警告框,显示“action:”,然后是一个警告框,显示“video”,这是操作的正确值。

为什么这些警告框显示无序,为什么变量 action 没有获取 response.data 值?这是否与 sendRequest 方法的延迟有关?如何让脚本等待,以便我可以获得该值? (我需要多次执行此请求 - 我需要请求 4 个值)

最佳答案

我假设 sendRequest 是一个异步方法(很像 Ajax 调用)。该脚本不会停止并等待响应。

唯一的解决方案是在回调中调用需要响应的其他函数。

关于javascript - 这个 JavaScript 中发生了什么,我该如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169236/

相关文章:

javascript - 如何翻译坐标以实现完美匹配

JavaScript 正则表达式 - 从单词旁边提取数字

javascript - 如何自定义 Isotope for Wordpress 插件?

javascript - 使用 chrome 扩展覆盖用户定义的函数以使用 native 函数

google-chrome-extension - ng-href 在 Chrome 扩展程序中填充链接列表时

javascript - 如何使 <li> 在重定向到新页面时保持突出显示?

javascript - 上下文菜单选项在哪里定义?

google-chrome - 更改 google chrome 桌面通知的大小

google-chrome-extension - 在 Chrome 扩展中使用时,Fetch API 不发送 session cookie

javascript - Electron 自动更新进度条