javascript - 获取函数内异步函数的返回数据

2023-11-27

我遇到问题,因为 chrome api 函数是异步的,我无法获取其返回值。考虑以下代码。我正在使用 AngularJS

    $scope.storageGet = function(param) {
        var returnData; 

        chrome.storage.local.get(param.storageName, function(data) {
            returnData = data;
        });

        return returnData;
    };

当我尝试这样称呼它时:

    console.log($scope.storageGet({'storageName': 'users'}));

它在控制台中打印“未定义”。我想看到的是chrome存储中存储的用户对象。嗯,我确定 Chrome 存储中有数据。


您无法返回由异步函数生成的数据,例如chrome.storage.local.get,因为您的函数更有可能在异步函数执行之前完成执行。这就是你的函数返回的原因undefined,这是默认值returnData.

一个好的替代方法是使用回调函数使您的函数异步。

$scope.storageGet = function(param, callback) {
    chrome.storage.local.get(param.storageName, function(data) {
        callback(data);
    });
};

现在你可以这样调用你的函数:

$scope.storageGet(param, function(returnData) {
    // do something with returnData
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript - 获取函数内异步函数的返回数据 的相关文章

  • 尝试制作Linux终端但失败

    这可能是一个愚蠢的问题 可能很容易找到 但我对这一切都很陌生 我似乎找不到我要找的东西 或者至少我不知道我需要寻找什么 所以我在这里 所以我想做的是创建一种 Linux 终端 这就是我到目前为止所得到的 我所坚持的是实际输入文本部分 我一直
  • 从 HTML 模板调用异步函数(Retunes Observable)

    HTML 模板上显示的数据是关键表单数据 意思是 需要翻译 为此 我想从我的模板中调用异步函数 尝试过这个 但没有成功 模板 span class myClass rowValue translateServingStyle size de
  • scrollTop 在 Chrome 中不起作用,建议的解决方法也不起作用

    许多其他问题 here https stackoverflow com questions 2544979 is there a problem with scrolltop in chrome here https stackoverfl
  • 隐藏加载失败的图片

    我有一个 Android 应用程序 它生成一些在本地 Webkit 视图中呈现的 HTML HTML 生成的细节实际上并不那么重要 除了 大部分来自一个地方 我无法改变它 HTML 周围的模板 包括页眉 页脚 HEAD 等 CSS 和 Ja
  • jQuery:当使用 on .scroll 事件和警报时,firefox 似乎无限循环

    我的主模板之一中有以下 jQuery 代码 document scroll function var scroll top document scrollTop alert scroll top if scroll top lt 70 fi
  • 如何防止字段的角度自动修剪?

    有没有什么方法可以防止整个应用程序中字段的角度自动修剪 我知道我可以使用 ngTrim 指令防止指定字段出现这种情况 但将此指令添加到应用程序中的所有文本字段看起来不太好 有什么方法可以对 Angular 模块中的所有字段执行此操作吗 这是
  • IE9:奇怪的 JavaScript 错误

    我尝试在网站中显示 Google DFP 广告横幅时遇到错误 这些广告在除 IE9 之外的所有浏览器中展示 您可以在此处查看带有横幅的简单测试页面 离线演示 错误是 抛出异常但未捕获 google ads js 第 34 行字符 474 I
  • JavaScript 事件循环:队列、消息队列、事件队列

    阅读了大量 JavaScript 事件循环教程 我看到了不同的术语来标识当调用堆栈为空时准备由事件循环获取的队列存储消息 Queue 消息队列 事件队列 我找不到规范术语来识别这一点 甚至 MDN 似乎也对此感到困惑事件循环页面 https
  • javascript 中的正则表达式和分隔符

    我不太擅长正则表达式 我需要一些帮助 但我被困住了 这就是我得到的 编辑 现在工作正常 看看 http jsfiddle net oscarj24 qrPHk 1 http jsfiddle net oscarj24 qrPHk 1 这就是
  • Javascript:一般访问函数参数

    这是我所拥有的 var log function arg1 arg2 console log inside arg1 arg2 var wrap function fn return function args console log be
  • JavaScript switch 语句是线性的还是恒定时间的?

    我的网站上有以下 JavaScript 以便在执行某些特定搜索时 答案会被硬编码到特定页面 function redirect var input document getElementById searchBox value toLowe
  • Javascript 搜索并替换包含方括号的字符序列

    我正在尝试在字符串 Nationality EN ESP 中搜索 EN 我想从字符串中删除它 所以我使用替换方法 代码示例如下 var str Nationality EN ESP var find EN var regex new Reg
  • Mustache.js 只允许换行,转义其他 HTML

    我正在根据用户输入创建评论 并在用户单击 提交 后使用 Mustache js 渲染它们 我意识到我可以替换用户输入换行符 n with br 呈现为 HTML 中断 例如 myString replace n g br 我意识到我可以使用
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • 如何在 Strongloop 环回脚手架项目中覆盖基本用户?

    给定一个使用以下命令创建的全新项目 slc lb project myapp 我该如何更换 user 模型中models json带有 customer 模型放置在 models目录 客户应该有登录 注销等方法 并且 用户 不应该作为 AP
  • Django pbkdf2_sha256 JS 实现

    我有一个来自 django 的数据库 我想从 Node js 中使用它 我有一个任务 验证用户身份 从数据库可知 算法 pbkdf2 sha256 salt 10000 次迭代和 base64 编码的哈希值 我必须在 JS 中执行哪些步骤才
  • 以编程方式访问使用数据 URI 作为源的 iframe

    我正在使用 数据 URI 以编程方式创建一个 iframe 该框架加载良好 但似乎以编程方式使用 iframe 会遇到跨域安全检查 var iframeDoc document getElementById myFrame contentW
  • 如何使我的响应式网站在手机上支持“请求桌面网站”?

    我有一个响应灵敏的动态网站 Java Servlet 驱动且完全手工编码 由于它是一个返回数据表的科学站点 因此某些选项在较小的视口宽度下不可用 然而 可能有些用户更喜欢在桌面网站上挣扎才能访问这些选项 我希望适应他们 我的问题是 对于 i
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 返回语句后的声明

    function f return f1 function f1 return 5 f returns 5 为什么这有效 之后声明局部函数有什么好处return 这是好的做法吗 它之所以有效 是因为函数声明都是由解释器在第一次传递时评估的

随机推荐

  • 设置脚本以在电子邮件通知中包含 Google 文档表单数据

    我已经使用 googledocs 设置了一个表单 我只想将输入到表单中的实际数据通过电子邮件发送给我 而不是建议表单已完成的一般回复 我没有代码等方面的技能或经验 但确信我可以解决这个问题 我花了几个小时 但没有任何运气 我的表格非常基本
  • 如何对无序 std::pair 进行 std::hash

    我希望能够使用std pair作为 unordered container 中的键 我知道我可以通过以下方式做到这一点 template
  • IOS:在 xcode 中为我的应用程序设置默认语言

    我启动了我的 xcode 项目 并进行了以下设置 在 xcode 5 中它添加了这种 基本 语言 但我不明白它是如何工作的 我想将默认语言设置为英语而不是意大利语 例如 如果用户将其设备设置为西班牙语或法语 则它必须看到英语版应用程序 而不
  • 计算 C# 中 XmlNode 的总数

    我试图找到一种方法来递归地从 XmlNode 获取子节点的总数 这就是说我想计算所有的孩子 孙子等 我认为它就像 node SelectNodes
  • 带有域字段的 CORS cookie 仅在 Firefox 中使用 jQuery AJAX 设置

    我无法设置 cookiedomain使用跨站点请求添加归档 我试图通过 jquery ajax 调用 request 来实现这一点 是否可以在除 Firefox 之外的其他浏览器中使用它 一些请求标头 Accept application
  • 从 JSON 字符串创建 Hashmap

    从java中的json字符串创建hashmap 我有 json 字符串 例如 phonetype N95 cat WP 并想转换成标准的Hashmap 我该怎么做 解析 JSONObject 并创建 HashMap public stati
  • Android 按钮背景选择器

    我想使用以下按钮选择器
  • 在 Angular JS 中动态应用 CSS 样式属性

    这应该是一个简单的问题 但我似乎找不到解决方案 我有以下标记 div style width 20px height 20px margin top 10px border solid 1px black background color
  • 如何将按钮添加到settings.bundle?

    我正在开发一个 iPhone 应用程序 默认情况下用户保持登录状态 如果他想注销 他应该打开 设置 并单击 注销 按钮 这将删除他的数据并在下次打开应用程序时要求登录 如何添加这样的按钮 就像 Twitter 设置中一样 正如 CodaFi
  • vb.net 从创建它的线程以外的线程访问

    我正在尝试将文本设置为标签Label caller Text phone number我收到此错误 System InvalidOperationException 跨线程操作无效 从创建它的线程以外的线程访问控制 Label caller
  • 如何在 Spring Security 中启用 POST、PUT 和 DELETE 方法

    我用 Spring Boot 开发了一个应用程序 运行良好 有一个安静的控制器 我尝试向某些页面添加 spring security 其余控制器的端点是 api greetings 我在下面的类中配置了安全设置 Configuration
  • 解析 xml 时出错:与 Facebook SDK 未绑定前缀

    我的项目无法识别 xml 中的 com facebook widget ProfilePictureView 或其他小部件 我导入了 facebook sdk 甚至用它来登录并与 open graph 交互 这一切都有效 我只是想添加一个个
  • 如何用D3添加简单的圆弧

    我想在图表部分添加一个简单的弧线 如圆 vis append circle style stroke gray style fill white attr r 40 attr cx 50 attr cy 50 所提供的D3的例子正在处理数据
  • 如何在for循环中使用setInterval函数

    我正在尝试在给定可变项目列表的情况下运行多个计时器 代码看起来像这样 var list Array for var x in list setInterval function list x 10 console log x gt list
  • 在堆栈跟踪中获取 VB.NET 行号

    我有一个 VB NET 2010 Winforms 应用程序 我想在堆栈跟踪中包含行号 我已阅读以下问题和答案 如何在VB net中运行应用程序时打印行号 其中提到 您始终需要在代码中包含 PDB 文件 其中包含在此类情况下使用的调试信息
  • Git 中的 commit-ish 和 tree-ish 是什么?

    问题 Git 中 commit ish 和 tree ish 的具体例子有哪些 堆栈溢出问题 git 中的 tree ish 是什么意思 交易 特别是树型 但我想了解更多both 背景 文档中的用法 Git 文档多次提到 commit is
  • Microsoft Edge window.open() 不支持宽度高度,并在后台打开

    我使用的是 Windows 10 预览版 Build 10130 并且window open新 Edge 浏览器中的方法的行为不符合规范 如果您使用示例代码https msdn microsoft com en us library ms5
  • 如何设置 Filezilla Pro 来访问我的 s3 存储桶?

    我购买了支持 Amazon S3 的 Filezilla Pro 请问如何设置 Filezilla Pro 访问我的存储桶 谢谢 对上述答案的一个重要补充 我的 S3 用户名和密码是什么 用户名 访问密钥 最好是仅具有访问特定 S3 存储桶
  • iPhone SDK 与静态库链接错误

    我已经构建了自己的静态库 其中包含要在项目中重用的组件 最近需要更新一堆类 具体来说 由于某些类更改了名称 某些方法的签名也发生了更改 现在发生的情况是 该库本身可以正常编译 但是 当添加到应用程序项目时 该项目无法链接 Ld build
  • javascript - 获取函数内异步函数的返回数据

    我遇到问题 因为 chrome api 函数是异步的 我无法获取其返回值 考虑以下代码 我正在使用 AngularJS scope storageGet function param var returnData chrome storag