JavaScript:一个接一个地执行多个REST调用的正确方法

时间:2014-08-23 13:24:37

标签: javascript ajax rest

我需要一个接一个地执行三个REST调用...并阅读我已经理解的链接它们的文档我要使用pipithen(这是一个别名pipe)。我对JavaScript很新,我想知道下面的代码片段是否正确:

var baseUrl = "http://localhost:9000/auth";
var appId = this.appId
$.ajax({
  type: "GET",
  url: baseUrl + "/apps/" + appId + "/apikey"
}).then(function(data) {
  log("apiKey: " + data.apiKey);
  $.ajax({
    type: "POST",
    data: JSON.stringify({ principal: appId, secret: data.apiKey }),
    url: baseUrl + "/apps/credentials",
    contentType: "application/json"  
  }).then(function(data) {
    log("token: " + data.token);
    $.ajax({
      type: "GET",
      headers: { "Authorization": "Token " + this.value },
      url: baseUrl + "/users/credentials"
    }).then(function(data) {
      log("tokeType: " + data.token.header.typ.split('/')[1]);
      log("exp: " + data.token.claims.exp);
    })
  })
});

如您所见,每次调用都需要前一次调用返回的数据。任何改进的建议都非常受欢迎。

1 个答案:

答案 0 :(得分:1)

使用then,无论ajax调用成功还是失败,您都会得到一个回调,这可能并不理想,因为您依赖它成功。如果您只希望回调成功({或success done的{{1}}),那么ajax就是您想要的那个。

除此之外,没关系。