在Windows 8 html5的挂起状态事件处理程序中写入文本文件
writing text file in suspend state event handler in windows 8 html5
我试图写一个文本文件时,暂停事件被触发即在winjs.application.oncheckpoint事件处理程序。我写我的对象JSON文本。下面是代码:
applicationData.localFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (sampleFile) {
var stringData = "";
var i;
for (i = 0 ; i < myData.objData.length - 1 ; i++) {
stringData += '{"title":"' + myData.objData[i].title + '","challange":"' + myData.objData[i].challange + '"},'n';
}
stringData += '{"title":"' + myData.objData[i].title + '","challange":"' + myData.objData[i].challange + '"}';
stringData = "[" + stringData + "]";
return Windows.Storage.FileIO.writeTextAsync(sampleFile, stringData);
}).done(function () { });
但是Windows应用程序在向文本文件中写入任何内容之前关闭。我调用args.setPromise()并将上述代码作为函数参数传递,但同样的问题仍然存在。
PS:我不知道如何做异步正确。请帮助。
就像Phil评论的那样,删除.done()
会修复它。
这是因为done()
不返回任何东西,而then()
返回链式承诺。这就是没有调用的原因。
还建议在应用程序数据发生变化时立即或间隔一段时间保存数据,而不是等待挂起事件来保存所有内容。暂停事件的时间为5秒。否则,按照这里的MSDN文档终止应用程序。
"如果一个应用程序在5秒内没有从挂起事件返回,Windows认为该应用程序已经停止响应并终止它"
app.oncheckpoint = function (args) {
app.sessionState.history = nav.history;
args.setPromise(Windows.Storage.ApplicationData.current.localFolder.createFileAsync
("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (sampleFile) {
var stringData;
// code to set stringData.
return Windows.Storage.FileIO.writeTextAsync(sampleFile, stringData);
}));
};
Just event.setPromise(applicationData.localFolder.createFileAsync ...)
然后挂起将等待,直到您的承诺完成。删除.done
相关文章:
- 使用不带文本文件的OpenLayers显示POI
- 使用javascript从文本文件中获取值
- 从javascript中的文本文件中获取值
- 在移动浏览器上显示大型文本文件
- 搜索文本文件并附加到表中
- 将文本文件加载到javascript中
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- 一个javascript实现base64图像编码并将结果写入文本文件
- 用javascript读取文本文件的第一行
- 从文本文件js中读取列表
- 使用JavaScript将压缩文本文件加载到字符串中
- 数组在手动写入时有效,但从文本文件加载时无效
- 在浏览器中打开文本文件-服务器上出现错误
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 任何编写文本文件并将其替换为上一个文本文件的方法
- html或java脚本代码在硬盘中创建一个文本文件
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 从文本文件加载jsondata时出现空白页
- 如何在不干扰电子邮件通知的情况下将眼镜保存在文本文件中
- 使用javascript创建新的文本文件(),但存储[objectFile]而不是文本