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