Winjs承诺返回一个值

时间:2014-06-17 14:11:01

标签: typescript winjs

我需要从Winjs承诺中返回一个值,如下所示:

getString() {
        var str: string;
        new WinJS.Promise((completed, error) => { Test.getAString(completed, error); })
                         .done((s: string) => str = s);
        return str;
    }

问题是str总是返回undefined,但是s有一个值(即" test"),我在调试模式下得到它。

先谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

str变量未定义的原因是因为它是在履行承诺之前返回的。我认为Test.getAString是异步的。它需要一点时间才能完成。所以return str;在完成之前执行。

解决这个问题的方法是返回promise,而不是在这里处理done - 函数,在获取字符串时处理实现。

所以你会得到类似的东西:

getString().then((s:string)=> do something with the string.. );

function getString(){
    return new WinJS.Promise((completed, error) => { 
        Test.getAString(completed, error); 
    });
}