Javascript函数从另一个函数记录到控制台
Javascript Function logging to console from another function
我有一个小问题,因为我缺乏JS的经验。。。
我的文件中有一个函数,它正确地记录到控制台,但不知何故,没有返回它记录的值(或者可能我不知道如何提取它。)
function getStoragex() {
chrome.storage.sync.get('alertsOn', function(data) {
var optionShowAlertsx = data;
console.info("This is logging ok" + optionShowAlertsx.alertsOn);
return optionShowAlertsx.alertsOn;
});
}
日志记录为:
DATA true
稍后,我有这个(在另一个函数中)
var optionShowAlerts = getStoragex();
console.info("This is logging undefined " + optionShowAlerts);
我做错了什么??
return
语句位于传递给chrome.storage.sync.get
的匿名函数内。getStoragex
函数从不发出return
,因此对它的调用会得到结果undefined
。
如果
chrome.storage.sync.get
是一个同步函数(看起来可能来自名称),您可以这样做:
function getStoragex() {
var rv;
chrome.storage.sync.get('alertsOn', function(data) {
var optionShowAlertsx = data;
console.info("This is logging ok" + optionShowAlertsx.alertsOn);
rv = optionShowAlertsx.alertsOn;
});
return rv;
}
(这种令人振奋的风格我不熟悉,如果我搞砸了,很抱歉。)
编辑:在我看来,该名称中的sync
与同步或异步功能无关,而是与数据同步有关
如果是异步,则不能从getStoragex
返回结果,因为getStoragex
在结果可用之前返回。在这种情况下,你可以接受一个回调,当你有结果的时候,你可以回调:
function getStoragex(callback) {
chrome.storage.sync.get('alertsOn', function(data) {
var optionShowAlertsx = data;
console.info("This is logging ok" + optionShowAlertsx.alertsOn);
callback(optionShowAlertsx.alertsOn);
});
}
另一方面,承诺目前越来越受欢迎。您可能会考虑使用其中一个(有几个可用的实现)。但是,如果chrome.storage.sync.get
是异步的,那么结果仍然是异步的。
您的return
语句向其返回值chrome.storage.sync.get
方法第二个参数本身。它不会返回到getStoragex()方法。
试试这个
function getStoragex() {
var optionShowAlertsx;
chrome.storage.sync.get('alertsOn', function(data) {
optionShowAlertsx = data;
console.info("This is logging ok" + optionShowAlertsx.alertsOn);
});
return optionShowAlertsx.alertsOn
}
var optionShowAlerts = getStoragex();
console.log("This is logging undefined " + optionShowAlerts);
相关文章:
- 我有可能防止黑客使用网络控制台用JavaScript重复调用upvote(AJAX)函数吗
- “期望赋值或函数调用,而是看到了表达式.” - 不必要的控制台.log
- 出现“未捕获的类型错误:未定义不是函数”控制台错误
- 函数将信息返回到控制台日志,但实际上并没有执行应有的操作
- jQuery插件可以由控制台触发,但不能由函数触发——为什么
- 想要从控制台隐藏错误$(..).focusOut不是函数
- jQuery显示函数打印到控制台
- 控制台.log或显示结果的函数
- 在 Javascript 函数中,控制台.log和返回有什么区别
- 检测何时从控制台调用函数的最佳方法
- 如何控制台记录我传递到此测试函数中的每个参数
- 控制台.log在 AngularJS 中执行作用域函数
- 函数/设置间隔意外记录两次到控制台
- 对函数变量的 JavaScript 控制台日志输出感到困惑
- 从 php 的 file_get_content() 函数访问控制台日志
- 使用 AJAX 的函数抛出“意外令牌 }”,Chrome 控制台
- 如何从浏览器控制台禁用 JavaScript 函数调用
- 无休止的控制台日志,javascript不会离开函数requestAnimationFrame
- JavaScript 和 if-else 函数的新手.(控制台日志中没有错误消息)
- Javascript素数函数控制台问题