【发布时间】:2018-06-06 06:59:02
【问题描述】:
我很难弄清楚如何使用 Observables 为 api 调用创建递归循环。
场景: 我调用外部 API,它返回如下内容:
{
data: {something, something, something},
next: "url for next set of data"
}
只要响应在next 中有值,我就需要继续调用相同的函数将所有数据收集到一个对象中。
我设法在另一个使用 Promises 的项目上做到了这一点,在该项目中,我使用 concat() 函数将返回的数据映射到单个数组中,但不知何故我无法理解我应该如何使用 Observables 做到这一点。
使用 Promise 的工作示例:
getData: function(url, params, headers){
return new Promise((resolve, reject) => {
axios.get(url, {
params: params,
headers: headers,
}).then((response) => {
let responseData = response.data.data[0];
if (response.data.next) {
this.getData(response.data.next, {}).then((resp) => {
for (let dataSet of responseData.dataSets) {
let row = resp.dataSets.find(i => i.variable === dataSet.variable)
if (row) {
dataSet.data = dataSet.data.concat(row.data)
}
}
resolve(responseData);
}).catch((error) => {
reject(error)
})
} else {
resolve(responseData);
}
}).catch(error => {
reject(error)
})
})
}
【问题讨论】:
-
您可以在此处发布您使用 promise 所做的代码。
-
编辑问题以包含示例