我有一种情况,我试图在来自Cordova的deviceready事件上初始化我的应用程序。现在,此初始化序列需要执行几秒钟。这导致总的启动时间比期望的要大得多。我的问题是,是否可以与Cordova API和即将出现的插件并行运行此初始化序列?

注意:初始化不利用API或插件的任何内容,因此我不能简单地在onLoad而不是onDeviceReady上立即运行它吗?

最佳答案

假设您应用的初始化使用了promise,您可以将deviceready侦听器包装在promise中,然后使用Promise.all与您的侦听器并行初始化:

const deviceReady = new Promise((resolve) => {
  document.addEventListener("deviceready", resolve, false);
});

function initializeApp() {
  // some async initialization (returns a promise)
}

Promise.all([deviceReady, initializeApp()])
  .then(() => {
    // ready to start
  });

10-04 17:11