【发布时间】:2017-04-13 18:48:45
【问题描述】:
我想知道绑定承诺结果的最佳方式,即使用 angular 2 注入 html 标记(我使用 ionic 2)... 如您所知,异步编码的主要问题是失去对当前对象的引用。看来我应该将当前对象作为参数传递给 Promise 函数生成器。 我在互联网上搜索了更好的解决方案,但没有找到!那么有没有更好的方法呢?
Ionic 2 本身使用观察和订阅来执行异步进程。但主要问题是,对于无法观察到的现有功能,它无法工作!
我的方法:
可注入类:
export class PromiseComponent {
doPromise = function (obj: any) {
return new Promise(function (resolve2) {
setTimeout(function () {
resolve2({ num: 3113, obj: obj });
}, 5000);
});
}
}
点击调用:
promiseVal = 0
doMyPromise() {
this.myPromise.doPromise(this).then(this.secondFunc);//UPDATED HERE
}
//UPDATED HERE
secondFunc = function (res) {
this.promiseVal = res.num
}
HTML:
<div>{{promiseVal}} </div>
<button (click)="doMyPromise()">Do Promise</button>
【问题讨论】:
-
我不明白你在做什么。是否要更新
promiseVal并保留旧值? -
没有。只是在 html 中的 TimeOut 之后更新 promiseVal
-
那你说的参考资料是什么意思?只需将
res.num分配给promiseVal。有什么问题? -
@echonax 。因为它与此消息有错误:未捕获(承诺中):TypeError:无法设置未定义的属性“promiseVal”类型错误:无法设置未定义的属性“promiseVal”
标签: javascript angular promise ionic2