gpt4 book ai didi

javascript - 影响回调函数中的变量

转载 作者:行者123 更新时间:2023-11-30 13:02:57 25 4
gpt4 key购买 nike

这种问题很频繁,但我做不出我想要的。我的代码看起来像这样。一些 pubKeyProfiles 存储在 chrome.storage 中,我希望我的函数 getProfile 返回其中之一。

getProfile(keyPairId){

var profile = null;

chrome.storage.local.get({ pubKeyProfiles : [] }, function (result) {
var pubKeyProfiles = result.pubKeyProfiles;
for (var i = 0; i < pubKeyProfiles.length; ++i) {
if(pubKeyProfiles[i].pubKey.keyId === keyPairId){
profile = pubKeyProfiles[i];
}
}
});

console.log(profile);
}

看完How to return value from an asynchronous callback function? ,我尝试了以下代码:

getProfile(keyPairId){

var profile = null;

function foo(fn){
chrome.storage.local.get({ pubKeyProfiles : [] }, function (result) {
var pubKeyProfiles = result.pubKeyProfiles;
for (var i = 0; i < pubKeyProfiles.length; ++i) {
if(pubKeyProfiles[i].pubKey.keyId === keyPairId){
profile = pubKeyProfiles[i];
fn(profile);
}
}
});
}

foo(function(profile){
return profile;
});

console.log(profile);
}

但是,当我处理一个异步函数时,无论我怎样尝试,配置文件仍然是 null

我的问题是:如何让函数 getProfile 返回 profile ??

最佳答案

将回调传递给您的函数是一个更好的主意。

var getProfile = function (keyPairId, callback) {
chrome.storage.local.get({ pubKeyProfiles : [] }, function (result) {
var pubKeyProfiles = result.pubKeyProfiles, profile;
profile = pubKeyProfiles.filter(function (pubKeyProfile) {
return pubKeyProfile.pubKey.keyId === keyPairId
})[0];

callback(profile);
});
};

getProfile(keyPairId, function (profile) {
//do something with profile here
});

关于javascript - 影响回调函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720556/

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