The Synchronous FileSystem API for Workers
简介:
The HTML5 FileSystem API and Web Workers 在各自的领域都是非常强大的。The FileSystem API终于为网络程序带来分层存储和文件I/O,workers为javascript带来真正的异步“多线程”。然而,当你使用这些API的同时,你可以做一些真正有趣的应用程序。
本教程利用在工作者中的HTML5 文件系统提供指导和代码示例,假定这两个API都是正常运行的。如果你还没准备好学习或者对学习更多的API不感兴趣。阅读这两个讨论的教程: Exploring the FileSystem APIs and Basics of Web Workers.
同步与异步的API:
使用异步的API是艰难的,因为它们确实很盘大,很复杂。但其实最令人沮丧的是,它们提供的东西在很多情况下会报错。过去你要处理的是在一个已经同步的世界里面的一个复杂的异步API。现在有个好消息,文件系统API定义一个同步的版本,以缓解在web worker身上的负担。
大部分情况下,同步的API就跟异步API是表兄弟一样。方法、属性、功能和函数将是很令人熟悉的。主要不同的是:
- 同步API只能用于一个worker,而异步API可以用于多个worker。
- 回调函数在外部:API方法现在返回一个值。
- 在window对象里面的方法(
requestFileSystem()
andresolveLocalFileSystemURL()
)变成requestFileSystemSync()
andresolveLocalFileSystemSyncURL()。
PS:这些方法是worker全局范围内的成员,不是全局对象。
除了这些不同,API基本是相同的。好吧,让我们开始吧。
Requesting a filesystem——请求一个文件系统。
一个应用程序通过一个web worker发送请求到
LocalFileSystemSync
对象来访问同步文件系统。The requestFileSystemSync()显示在worker的全局范围内。
var fs = requestFileSystemSync(TEMPORARY, 1024*1024 /*1MB*/);
注意现在我们使用的同步API以及缺乏成功和错误回调,返回的新的值。
与普通的文件系统API,方法为前缀的时候。
self.requestFileSystemSync = self.webkitRequestFileSystemSync ||
self.requestFileSystemSync;