javascript - Angular 相关的 $http 请求

标签 javascript angularjs promise

我正在尝试通过发布请求获取数据,并且我正在查询的 API 最多返回 50 个元素。到目前为止,这效果很好,但现在我们有一些用例,强制接收更多不确定数量的元素。 $http 方法返回一个 promise ,但我必须依赖此数据来发出另一个请求。 我的简化代码:

var data =
    "q=" + term
    "&timestamp=" + latest

$http({
        method: 'POST',
        url: url,
        data: data
    }).then(
        function(response) {
            let dataList = response.data.list; 
            if(dataList.length > 50)
               /*TODO: new query with other timestamp-value*/
            return dataList ;

        },
        function(response) {
            if(shouldLog){
                console.log("[DebuggingService] " + response);
            }
        }
    );

有没有办法根据之前的请求组合多个http请求?

编辑

没有分页。因此必须更改时间戳值。 (获取响应的最新时间戳)

最佳答案

我会将该请求包装在一个函数中,该函数也可以在 then() 内递归调用以返回另一个请求 promise

类似于:

function getData(term, time, res = []) {

  var data = "q=" + term + "&timestamp=" + time
  // return the $http promise
  return $http({
    method: 'POST',
    url: url,
    data: data
  }).then(function(response) {
    let dataList = response.data.list;
    // merge new data into final results array
    res = res.concat(dataList);

    if (dataList.length > 50) {
       const timeStampFromResponse = //????
      // return new request promise
      return getData(term, timeStampFromResponse, res)
    }
    // return final array
    return res;

  })
}

getData(term, latest).then(function(results) {
  // all results available here
}).catch(function(response) {
  if (shouldLog) {
    console.log("[DebuggingService] " + response);
  }
})

关于javascript - Angular 相关的 $http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53782949/

相关文章:

html - 如何使用 Angularjs 在 ng-options 中使用字母顺序?

javascript - 如何通过ajax调用导航到跨域网页?

javascript - 从 JSContext 中的 JS Promise/async 函数获取值

javascript - 按键在我为某些聊天应用程序制作的功能中不起作用

javascript - Angularjs ng-click 不更新 View

javascript - JQuery datepicker 控件 - 如何在单击按钮时将日期增加/减少 1 天

angularjs - Angular - 在 ngInclude 中调用时 ngModel 不更新

javascript - 为什么箭头函数隐含的 `return` 在这种情况下不起作用(TS)?

Javascript `await` "SyntaxError: Unexpted identifier"即使我在 `async` 函数中等待

javascript - 拦截 Angular $http 中的服务器错误并拒绝 Promise