在 Metro 风格应用中启动时加载数据

Load data at startup in Metro style app

本文关键字:加载 数据 启动 Metro 风格 应用      更新时间:2023-09-26

我正在尝试开发一个使用相机并将照片存储在用javascript和html5编写的应用程序本地文件夹中的应用程序的应用程序。我有 3 个页面使用相同的文件(图像),在每个页面的就绪部分加载图像太昂贵了,所以我正在考虑在应用程序启动时使用 getFilesAsync() 方法将图像加载到数组或列表中,然后使用 WinJS.Namespace.define 将其公开。该解决方案适用于少量数据,但是当大量图片存储在图像文件夹中时,异步操作需要更多时间,因此当我尝试访问另一页上的文件时,它仍然未定义。

您是否知道如何在应用程序启动时加载数据并使其可从其他页面访问并强制程序等到完成?我知道这与异步编程完全相反,但我看不到任何其他解决方案。谢谢!

你需要

使用一个承诺,和承诺链来允许你等待完成:

var getFiles = Windows.Storage.StorageFolder.getStorageFilderSync("Your folder").then(function(folder) {
    return folder.getFilesAsync();
});
/* somewhere else in your app */
getFile.done(doWorkWithResult);

您可以从其他页面调用 done;如果 getFilesAsync 已完成,则它将立即返回,并且不会重新运行查询。如果它还没有准备好,那么它只会等到它完成。

这里有一个很好的示例,其中包含更多工作示例。