如何进行初始化的Prom,如果初始化已经发生,它会立即解决?

时间:2016-06-13 14:18:15

标签: javascript promise

服务工作者拥有这个不错的功能 - 在全球范围内,有一个承诺navigator.serviceWorker.ready。您可以使用它来确保在初始化服务工作程序时调用代码。有趣的是,它在服务工作者初始化后也能正常工作。你可以随时做:

navigator.serviceWorker.ready.then(function() {/* something */});

如果工作人员已经准备就绪,它会立即开火。

我怎样才能做出这种初始化承诺?例如,在我的服务工作者中,我有以下代码:

var cache;
self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open('offline-v1')
      .then(function(c) {
        cache = c;
      })
  );
  event.waitUntil(self.skipWaiting());
});

如果缓存失败到init,我如何制作全局承诺cacheReady保证resolve使用缓存对象或reject,但是init事件已被解雇?我正在寻找作为一般解决方案。我可以为此编写一些特殊代码,但我想了解这个问题的正确基于承诺的解决方案。

0 个答案:

没有答案