我需要从端点及其结构的方式获取一些结果,响应告诉我接下来要使用哪个端点用于下一组结果(每个请求的当前限制为1k行),直到获得所有结果为止。然后我需要将数据拼接在一起。
我可以使用以下代码相对轻松地获取一组结果,但很难理解我如何等待结果才能获取下一组,除非我嵌套它,并且我不想这样做,因为我不知道我需要预先获取多少组结果。
var headers = {
'Content-type': 'application/json',
'X-DBX-AUTH-TOKEN': 'yyy@zzz.com/6573846tf9334e'
};
var options_results = {
method: 'GET',
headers: headers,
};
var url = 'https://endpoint/execute/{uuid}/0';
options_results.url = url;
function fetchResults(error, response, body) {
console.log(body);
var next_uid = JSON.parse(body.uuid);
}
request(options_results, fetchResults);
我已经读过承诺等,但我仍然在努力如何应用这里。任何帮助都会非常感激!
答案 0 :(得分:0)
您可以将请求回调函数转换为promise。代码看起来像这样:
var requestPromise = options =>
new Promise(
(resolve,reject)=>
request(
options,
(error,response,body)=>
(error)
? reject(error)
: resolve([body,response])
)
);
requestPromise(
{
url:'https://endpoint/execute/{uuid}/0',
method: 'GET',
headers: {
'Content-type': 'application/json',
'X-DBX-AUTH-TOKEN': 'yyy@zzz.com/6573846tf9334e'
}
}
)
.then(
([body])=>{
var next_uid = JSON.parse(body.uuid);
//make next request
return requestPromise(
{
url:'https://endpoint/execute/{uuid}/0',
method: 'GET',
headers: {
'Content-type': 'application/json',
'X-DBX-AUTH-TOKEN': 'yyy@zzz.com/6573846tf9334e'
}
}
)
}
)
.then(
([body,response])=>{
console.log("made other request:",body,response);
}
)
.catch(
err=>console.error("something went wrong:",err)
);