连锁店;然后";angularjs中的请求

连锁店;然后";angularjs中的请求,angularjs,Angularjs,我的控制器中有两个调用,它们使用服务并返回一些数据。我的第二个调用取决于第一个调用的结果。如何链接两个调用并仅在第一个调用为resolve时从第二个调用获取数据 InviteFriendsCodeService.getLeagueCode().then( (resp) => { ctrl.invitationCode = resp.data.data.leagues[0].code; return false; }); InviteFriendsCodeService.ge

我的控制器中有两个调用,它们使用服务并返回一些数据。我的第二个调用取决于第一个调用的结果。如何链接两个调用并仅在第一个调用为resolve时从第二个调用获取数据

InviteFriendsCodeService.getLeagueCode().then( (resp) => {
  ctrl.invitationCode = resp.data.data.leagues[0].code;

  return false;


});

InviteFriendsCodeService.getInviteLink().then( (resp) => {

 ctrl.recruitCode = resp.data.data.code;
 ctrl.invitationLink = `${window.location.origin}/registration/?recruit=${ctrl.recruitCode}&league=${ctrl.invitationCode}`

 return false;

});

我认为您的两个调用都是相互独立的(因为您没有使用第一个调用的响应来触发第二个调用)

因此,您可以同时触发它们,并在它们解析时指定控制器成员。像这样:

Promise.all([
  InviteFriendsCodeService.getLeagueCode(),
  InviteFriendsCodeService.getInviteLink()
]).then(function(resp) {
  ctrl.invitationCode = resp[0].data.data.leagues[0].code;
  ctrl.recruitCode = resp[1].data.data.code;
  ctrl.invitationLink = `${window.location.origin}/registration/?recruit=${ctrl.recruitCode}&league=${ctrl.invitationCode}`
});

我认为您的两个调用都是相互独立的(因为您没有使用第一个调用的响应来触发第二个调用)

因此,您可以同时触发它们,并在它们解析时指定控制器成员。像这样:

Promise.all([
  InviteFriendsCodeService.getLeagueCode(),
  InviteFriendsCodeService.getInviteLink()
]).then(function(resp) {
  ctrl.invitationCode = resp[0].data.data.leagues[0].code;
  ctrl.recruitCode = resp[1].data.data.code;
  ctrl.invitationLink = `${window.location.origin}/registration/?recruit=${ctrl.recruitCode}&league=${ctrl.invitationCode}`
});

如果您从
函数返回另一个承诺,那么
函数的原始承诺将与返回的承诺解析为什么进行解析,从而允许您将这两个承诺链接起来:

InviteFriendsCodeService.getLeagueCode()
  .then( (resp) => {
    ctrl.invitationCode = resp.data.data.leagues[0].code;
    return InviteFriendsCodeService.getInviteLink();
  }).then( (resp) => {
   ctrl.recruitCode = resp.data.data.code;
   ctrl.invitationLink = `${window.location.origin}/registration/?recruit=${ctrl.recruitCode}&league=${ctrl.invitationCode}`
 return false;
  });

如果您从
函数返回另一个承诺,那么
函数的原始承诺将与返回的承诺解析为什么进行解析,从而允许您将这两个承诺链接起来:

InviteFriendsCodeService.getLeagueCode()
  .then( (resp) => {
    ctrl.invitationCode = resp.data.data.leagues[0].code;
    return InviteFriendsCodeService.getInviteLink();
  }).then( (resp) => {
   ctrl.recruitCode = resp.data.data.code;
   ctrl.invitationLink = `${window.location.origin}/registration/?recruit=${ctrl.recruitCode}&league=${ctrl.invitationCode}`
 return false;
  });

在第一次承诺之前写下你的第二个电话

invitefriendscodesvice.getLeagueCode()。然后((resp)=>{
ctrl.invitationCode=resp.data.data.leagues[0]。代码;
InviteFriendsCodeDevice.getInviteLink()。然后((resp)=>{
ctrl.createcode=resp.data.data.code;
ctrl.invitationLink=`${window.location.origin}/registration/?recruit=${ctrl.RecruiteCode}&league=${ctrl.invitationCode}`
返回false;
});
返回false;

});在第一次承诺中写下你的第二个电话

invitefriendscodesvice.getLeagueCode()。然后((resp)=>{
ctrl.invitationCode=resp.data.data.leagues[0]。代码;
InviteFriendsCodeDevice.getInviteLink()。然后((resp)=>{
ctrl.createcode=resp.data.data.code;
ctrl.invitationLink=`${window.location.origin}/registration/?recruit=${ctrl.RecruiteCode}&league=${ctrl.invitationCode}`
返回false;
});
返回false;

});谢谢你的回答,它在工作,但批准的一个更适合我的任务谢谢你的回答,它在工作,但批准的一个更适合我的任务