Я создаю приложение для извлечения данных из SkyScanner (с RapidApi). В основном я должен "открыть сессию" с API, а затем получить ключ сессии, чтобы получить результаты. - Это не проблема.
Когда я получаю результаты, мне нужно проверить, имеет ли тело результата (не заголовки) статус с «UpdatesPending». Если это так - мне нужно отправить эти результаты на сторону клиентов, но продолжайте извлекать результаты с другим запросом к API, пока я не получу результат с "UpdatesComplete".
Хотел бы немного помочь здесь.
Я пытался сделать оператор if, но, похоже, это не решает проблему .. Я использую Node.js и lib-обещание запроса.
rp(options)
.then(response => {
let index = response.headers.location.lastIndexOf("/");
console.log(index);
let sessionKey = response.headers.location.slice(index + 1);
console.log(sessionKey);
return sessionKey;
})
.then(sessionKey => {
let options = {
method: "GET",
url: `https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/pricing/uk2/v1.0/${sessionKey}`,
qs: { pageIndex: "0", pageSize: "10", sortType: "price", stops: stops },
headers: {
"x-rapidapi-host":
"skyscanner-skyscanner-flight-search-v1.p.rapidapi.com",
"x-rapidapi-key": `${RapidapiKey}`
},
resolveWithFullResponse: true
};
let status;
console.log("first status", status);
rp(options)
.then(response => {
status = JSON.parse(response.body).Status;
res.status(200).write(response.body);
if (status !== "UpdatesComplete") {
rp(options)
.then(response => {
console.log(JSON.parse(response.body).Status);
status = JSON.parse(response.body).Status;
res.status(200).write(response.body);
return response;
})
.catch(err => {
console.log(err);
});
console.log("inside if status", status);
}
return response;
})
.catch(err => {
console.log(err);
});
})
.catch(err => {
console.log(err);
});