gpt4 book ai didi

asynchronous - 如何在继续执行之前等待异步 chrome.storage.local.get() 完成

转载 作者:行者123 更新时间:2023-12-04 14:45:36 25 4
gpt4 key购买 nike

我有两个电话给 chrome.storage.local.get() .在继续为我的 chrome 扩展执行其余代码(调用 continueCode() 函数)之前,我需要完成这些调用,但我不确定如何执行此操作,这是我的代码。

function getData() {
chrome.storage.local.get(['key'], function(result) {
if (Object.values(result)[0] != undefined) {
object1.innerHTML = Object.values(result)[0].val;
}
});

chrome.storage.local.get(['key2'], function(result) {
if (Object.values(result)[0] != undefined) {
object2.innerHTML = Object.values(result)[0].val;
}
});

continueCode();
}

最佳答案

您可以使用 new Promise , async/await来处理这个。假设您要处理 chrome.storage.local.get同步使 continueCode()可以有需要的数据。
获取数据:

  const readLocalStorage = async (key) => {
return new Promise((resolve, reject) => {
chrome.storage.local.get([key], function (result) {
if (result[key] === undefined) {
reject();
} else {
resolve(result[key]);
}
});
});
};
主功能:

async function getData() {
let key1 = await readLocalStorage('key1');
object1.innerHTML = key1;
let key2 = await readLocalStorage('key1');
object1.innerHTML = key2;

continueCode();
}
或者如果您不熟悉 async/await行为。您可以将这 2 个 promise 包装到一个数组中并使用 Promise.all ,像这样:
function getData() {
const key1 = readLocalStorage('key1');
const key2 = readLocalStorage('key2');

Promise.all([key1, key2]).then(values => {
object1.innerHTML = values[0];
object2.innerHTML = values[1];

continueCode();
});
}

关于asynchronous - 如何在继续执行之前等待异步 chrome.storage.local.get() 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440008/

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