2012-08-08 94 views
0

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

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

+0

您是否正在使用实际页面导航 - 例如您更改window.location.href,或者您是否使用WinJS导航? – 2012-08-08 16:12:53

+0

我正在使用WinJS页面导航。 – Fujion 2012-08-08 17:11:08

回答

0

你需要使用一个承诺,和希望链,让你等待完成:

var getFiles = Windows.Storage.StorageFolder.getStorageFilderSync("Your folder").then(function(folder) { 
    return folder.getFilesAsync(); 
}); 

/* somewhere else in your app */ 
getFile.done(doWorkWithResult); 

您还可以从您的其他网页上完成的;如果getFilesAsync已完成,那么它将立即返回并且不会重新运行查询。如果还没有准备好,那么它会一直等到它完成。

有一个很好的示例here有一些更多的工作示例。

+0

我一直在想,但我需要首先获取“图像”文件夹,这是另一个异步操作。你能给我写一个代码,其中包含这两个操作在一个函数?我已经红了很多关于这个文件,但我仍然不确定我知道链接异步调用的正确方法。 – Fujion 2012-08-08 18:15:20

+0

你可以自己写; 让我更新示例。 :) [编辑] – 2012-08-08 18:16:17

+0

非常感谢。我是StackOverflow的新手,所以我应该如何在单词旁边表达我的感激之情?我的意思是我应该在哪里投票给这个有用的信息?:) – Fujion 2012-08-08 18:29:33

相关问题