我在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。
答案 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,
});