加载文件并在WinRT中异步处理它

时间:2011-12-28 04:11:22

标签: javascript html5 windows-8 windows-runtime microsoft-metro

在Visual Studio 11中,我构建了一个HTML5 Metro应用程序,可以在初始化时读取和处理文件。我有以下代码:

var ws = Windows.Storage;

Debug.enableFirstChanceException(true);
var myDataSource = {};

var id = function (elementID) {
    return document.getElementById(elementID);
}

WinJS.Namespace.define('ToDoToday', {
    id: id,
});

function initialize() {
Windows.Storage.KnownFolders.documentsLibrary.createFileAsync("taskList.todo", Windows.Storage.CreationCollisionOption.openIfExists)

.then(function (file) {
    return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
})

.then(function (stream) {
    var inputStream = stream.getInputStreamAt(0);
    var reader = new Windows.Storage.Streams.DataReader(inputStream);

    var size = stream.size;
    if (size > 0) {
        reader.loadAsync(size).then(function(){
            myDataSource = reader.readString(size);
        })
    }
})
.then(function () {
    WinJS.Namespace.defineWithParent(ToDoToday, 'Tasks', {
        data: myDataSource,
    })
})
.then(function () {
    WinJS.UI.processAll()
})
.then(function () {
    var basicListView = WinJS.UI.getControl(document.getElementById("taskChecklist"));
    basicListView.dataSource = ToDoToday.Tasks.data;
    basicListView.refresh;
});
}
document.addEventListener("DOMContentLoaded", initialize, false);

初始化函数从不加载文件。由于链接的thens,调试器不返回任何有用的东西。 openAsync上的断点永远不会被击中。

最终错误发生在数据绑定:

JavaScript运行时错误:对象不支持属性或方法'createListBinding'

如果我不从文件中读取,绑定似乎工作正常。

我确信我的问题是如何链接异步调用的功能性误解,第二组眼睛不会受到伤害。

0 个答案:

没有答案