我需要从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"),我在调试模式下得到它。
先谢谢你的帮助。
答案 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);
});
}