2

我正在使用 Javascript (WinJS) 为 Windows 8 Metro 开发应用程序。

假设我有以下代码:

Windows.Storage.ApplicationData.current.localFolder.createFileAsync("test.dat", Windows.Storage.CreationCollisionOption.replaceExisting)
    .done(
        /* write some data to the file here */)

var x = null;
x.prop = 1;

很明显,前面的代码会在 x.prop = 1 行崩溃。 createFileAsync Promise 会发生什么?

做一个简单的调试测试会产生这样一个事实,即即使应用程序崩溃,Promise 也会完成,但我可以确定情况总是如此,并且文件将被创建和写入吗?

谢谢。

4

1 回答 1

0

我认为如果应用程序崩溃,您无法确定 Promise 是否会完成。如果返回 Promise 的操作完成得足够快,它可能会完成。但是,如果您正在寻找保证,我认为您不会得到保证。

我建议进行防御性编码,这样如果未创建文件,您可以在下次运行应用程序时创建它。

当然,最重要的是,您应该进行适当的异常处理,以确保应用不会因为一个简单的异常而崩溃。

有关开发 Windows 应用商店应用程序的更多信息,请查看生成应用程序

于 2013-01-11T01:31:07.273 回答