在 Metro 风格应用中启动时加载数据
Load data at startup in Metro style app
我正在尝试开发一个使用相机并将照片存储在用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 已完成,则它将立即返回,并且不会重新运行查询。如果它还没有准备好,那么它只会等到它完成。
这里有一个很好的示例,其中包含更多工作示例。
相关文章:
- 正在等待呈现图表,直到加载数据为止
- ng绑定和ng href问题.ng href未从控制器加载数据
- 单击按钮时加载数据
- 在reactjs组件中预加载数据
- Highcharts可以从服务器加载数据,但不能更新
- AngularJS promise在加载数据之前得到解决
- 在Knockout JS中搜索从DB加载数据的项目
- 如何在angular js中使用$emit后重新加载数据
- 构建多个图表时,HighCharts加载数据的速度较慢
- 加载初始网站后在后台加载数据
- ExtJS网格未从Ext.data.XmlStore加载数据
- 数据表 AJAX 筛选器重新加载数据
- select2 使用 AJAX 加载数据不能选择任何选项
- 在 Metro 风格应用中启动时加载数据
- 需要帮助使用 AJAX 和其他一些东西加载数据
- Vue 不加载数据
- 向右滚动加载数据
- 为SEO的数据绑定JS预加载数据
- mysql循环-预加载数据
- 无法使用JSON加载数据表