在类构造函数中调用Winjs异步

时间:2014-02-04 13:05:54

标签: windows-8 winjs windows-8.1

我在WinJS中有一个类,在构造函数中有一个属性。该属性调用异步方法来读取其值。

以下是代码:

var MyClass = WinJS.Class.define(
    // The constructor function.
    function () {
        var self = this;

        Windows.Storage.ApplicationData.current.localFolder.getFolderAsync("MYFOLDER")
        .done(function (folder) {
            self.myFolder = folder;
        },
        function (error) {
            self.myFolder = null;
        });
    },
    // The set of instance members.
    {
        myFolder: null,

    });

然后当我实例化Class:

var myClass = new MyClass();

我这样做是因为我实例化了myClass.myFolder这个类,我无需重新运行代码。 现在我的问题显然是在实例化对象后myClass.myFolder不会立即可用。

我怎样才能确保只有在拥有值后才能访问myClass.myFolder属性?

我可以在属性中返回一个promise,但基本上我不确定如何在构造函数中使用promise。

1 个答案:

答案 0 :(得分:1)

要使属性成为承诺,您需要做的就是将getFolderAsync的结果分配给属性。

var MyClass = WinJS.Class.define(
// The constructor function.
function () {
    var self = this;

    this.myFolder = Windows.Storage.ApplicationData.current.localFolder.getFolderAsync("MYFOLDER");
},
// The set of instance members.
{
    myFolder: null,

});