我注意到使用Angular 2的组件有一种奇怪的行为.一旦我的组件改变了作为我的提供者的模型,我的视图需要几秒钟才能更新.即使来自API的数据是单个数据.
例如:
作为我的提供者,我有一个名为UserModel的模型.在我的组件中,我从API获取数据,然后更新此模型,这也在我的视图中.从服务器获得响应之后,更新我的视图仍然需要几秒钟,有时它不会更新,就在我单击同一页面上的任何文本控制器之后,然后在任何文本获得焦点后更新我的视图.
有没有人见过这个?我能做错什么?
卡组件
public createCard(model:CardModel):Promise<any>{
var context = this;
return new Promise((resolve, reject) => {
this.stripe.createToken(model)
.then(function(token){
model.token = token;
context.saveCard("./card", model, true)
.then(data => resolve(data))
.catch(error => reject(error));
})
.catch(error => reject(error));
});
Run Code Online (Sandbox Code Playgroud)
条纹服务
public createToken(model:CardModel):Promise<any>{
//I get callback and convert return it as promise
return new Promise((resolve, reject) => {
//this function is the one from stripe.js, it is not promise
this.stripe.card.createToken(model, function(status, response){
if(status == 200){
resolve(response.id);
}else{
reject(response.error.message);
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
如果您发现该函数返回createToken回调,因为它是一个Strip.js功能,然后我把它转换答应还给createCard.但是一旦完成所有功能,我的区域就不会改变.如果我删除this.stripe.card.createToken并使用超时返回一个简单的resolve(),它可以正常工作.所以我认为问题是什么时候有异步函数在Promise中返回回调.但我不知道如何处理它.