gpt4 book ai didi

Javascript函数从另一个函数记录到控制台

转载 作者:行者123 更新时间:2023-12-02 17:00:55 25 4
gpt4 key购买 nike

由于我缺乏 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);
});

}

或者, promise 目前越来越受欢迎。您可能会考虑使用其中之一(有几种可用的实现)。不过,如果 chrome.storage.sync.get 是异步的,结果仍然是异步的。

关于Javascript函数从另一个函数记录到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25726097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com