如何将 Promise.all() 与 chrome.storage() 一起使用?

2023-11-23

我有几个异步函数正在运行。我想等他们全部完成后再采取下一步行动。这是我用来获取所有键/值的代码chrome.storagePromise.all()执行。

var promise1 = Promise.resolve(3);
var promise2 = 42;
var promise3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, 'foo');
});

var getAll = chrome.storage.sync.get(function(result) {
  console.log(result)
});

Promise.all([promise1, promise2, promise3, getAll]).then(function(values) {
  console.log(values); // [3, 42, "foo", undefined]
});

不幸的是,这不起作用。它返回undefined.

上面的大部分代码摘自MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all


The chrome.*API 不支持 Promise,它使用异步回调。
但你可以承诺你的电话chrome.storage.sync.get:

var getAllPromise = (function() {
    return new Promise(function(resolve) {
        chrome.storage.sync.get(function(result) {
            resolve(result);
        });
    });
})();

Promise.all([getAllPromise]).then(...);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Promise.all() 与 chrome.storage() 一起使用? 的相关文章

随机推荐