Javascript 调用两个承诺并设置两个对象,但是第二个被设置为第一个

Javascript 调用两个承诺并设置两个对象,但是第二个被设置为第一个,javascript,angular,promise,Javascript,Angular,Promise,我想一个接一个地执行两个函数。一个设置一个对象,另一个根据第一个对象的特性设置另一个对象。出于某种原因,第一个对象设置得很好,我可以在控制台中正确地看到第二个对象,但是当我尝试将其设置为第二个对象时,它会延迟到第一个对象 setObject1(){ var self = this; this.Service.getObject1().then(function(data){ if(data){ self.Object1 = data.Data; self.setObject2

我想一个接一个地执行两个函数。一个设置一个对象,另一个根据第一个对象的特性设置另一个对象。出于某种原因,第一个对象设置得很好,我可以在控制台中正确地看到第二个对象,但是当我尝试将其设置为第二个对象时,它会延迟到第一个对象

setObject1(){
var self = this;
this.Service.getObject1().then(function(data){
  if(data){
    self.Object1 = data.Data;
    self.setObject2();
  }
});
}

setObject2(){
var self2 = this;
this.Service2.getObject2(this.Object1.HRRef).then(function(sdata){
  if(sdata){
    self2.Object2 = sdata[0];
  }
});
}

我可以在控制台中很好地看到这两个对象,但是当我尝试设置self2.Object2=sdata[0]时,它没有被设置

我猜这是一个
问题

不要使用
函数
语法

使用箭头语法:
(数据)=>{}

就你而言:

setObject1(){
this.Service.getObject1().then(数据=>{
控制台日志(数据);
如果(数据){
this.Object1=data.data;
setObject2();
}
});
}
setObject2(){
this.Service2.getObject2(this.Object1.HRRef)。然后(sdata=>{
控制台日志(sdata);
国际单项体育联合会(sdata){
this.Object2=sdata[0];
}
});
}

我猜这是一个
问题

不要使用
函数
语法

使用箭头语法:
(数据)=>{}

就你而言:

setObject1(){
this.Service.getObject1().then(数据=>{
控制台日志(数据);
如果(数据){
this.Object1=data.data;
setObject2();
}
});
}
setObject2(){
this.Service2.getObject2(this.Object1.HRRef)。然后(sdata=>{
控制台日志(sdata);
国际单项体育联合会(sdata){
this.Object2=sdata[0];
}
});
}

您如何知道它没有设置?向我们展示您尝试访问它的方式(何时)。当我将鼠标悬停在控制台中的sdata[0]上时,它向我显示它是数据。数据我以为您在争论
self.Object2
?在任何情况下,您似乎对记录的对象的数量感到困惑,如果您稍后对对象进行变异,这是不明显的。它可能正在设置,但您可能在设置之前查看它。请记住,这些是异步操作,将在将来某个时间完成。检查结果的唯一可靠位置是
.then()
处理程序中。您如何知道它没有设置?向我们展示您尝试访问它的方式(何时)。当我将鼠标悬停在控制台中的sdata[0]上时,它向我显示它是数据。数据我以为您在争论
self.Object2
?在任何情况下,您似乎对记录的对象的数量感到困惑,如果您稍后对对象进行变异,这是不明显的。它可能正在设置,但您可能在设置之前查看它。请记住,这些是异步操作,将在将来某个时间完成。检查结果的唯一可靠的地方是
.then()
处理程序内部。他不使用
这个
,他使用
自我
变量来避免该问题。他不使用
这个
,他使用
自我
变量来避免该问题。