我有2个服务组件: PromiseService.service.ts(处理延迟调用和异步调用)
@Injectable()
export class PromiseService{
constructor(private staffservice: StaffService) {}
defercall(asyncCalls, syncCalls) {
return new Promise((resolve, reject) => {
const promises = asyncCalls.map(function(val){return val();});
Promise.all(promises).then(result => {
resolve(result); });
});
}
}
和StaffService.service.ts(处理员工信息)
@Injectable()
export class StaffService{
constructor(private promises: PromiseService) {}
updateStaffInfo(){
this.promises.defercall(this.updateid, this.updateaddress);
}
updateid() {
}
}
但是,我遇到以下错误:
检测到循环依赖: StaffService.service.ts-> PromiseService.service.ts-> StaffService.service.ts
我尝试更改Promise Service组件并删除了以下几行:
但是,出现另一个错误: 未处理的承诺拒绝:无法读取未定义的属性'updateid';区域:任务:Promise.then;值:TypeError:无法读取未定义的属性'updateid'
如何使PromiseService识别“ this”是指StaffService? 我已经被这个错误困扰了1周。谢谢!
更新: 感谢您的答复。我已在PromiseService中删除了StaffService声明,更新后的StaffService打字稿是:
@Injectable()
export class StaffService{
staffid: any;
staffaddress: any;
constructor(private promises: PromiseService){}
updateid(id) {
this.staffid = id;
}
updateStaffInfo() {
promises.defercall(this.updateid, this.updateaddress);
}
updateaddress(address) {
this.staffaddress = address;
}
}
但是当我运行应用程序(ngserve)时,出现以下错误:
未处理的承诺拒绝:无法读取undefined的属性'updateid';区域:任务:Promise.then;值:TypeError:无法读取未定义的属性'updateid'
未处理的承诺拒绝:无法读取未定义的属性'updateaddress';区域:任务:Promise.then;值:TypeError:无法读取未定义的属性'updateaddress'
非常感谢您。
答案 0 :(得分:0)
更改
constructor(private staffservice: StaffService) {}
收件人
constructor() {}
您的Promise服务不需要对业务服务的依赖。
答案 1 :(得分:0)
您的代码有误,this.updateid
是什么?如果您这样引用,则称为变量,但不会对任何变量进行贴花。
然后只有这样的错误显示。Cannot read property 'updateid' of undefined
。
您必须像这样引用方法使用。 this.updateid()
确保该方法返回一些值。如果不返回值,它将仍然发生未定义的错误。还有你的方法没有实现。
您的PromiseService
服务文件无需这样声明。请删除。
constructor(private staffservice: StaffService) {}
请解决这些问题,然后运行,让我知道一次。