Я не уверен, что это то, что вы ищете, но вот пример использования рекурсии и request-promise
:
const rp = require('request-promise')
const url = "https://google.com"
var options = {
uri: url
}
var count = 0
function chain(options, count) {
const newURL = `${url}/?count=${count}`
console.log(`Requesting ${newURL}`)
rp(options).then(function(body) {
console.log(`Success, body was ${body.length} bytes`)
count = count + 1;
if ( count < 20 ) {
options = {
uri: newURL
}
// recursion
chain(options, count)
}
}).catch(function (err) {
console.log(`An error occurred: ${err}`)
})
}
chain(options, count)
Когда я запускаю это, вот вывод:
Requesting https://google.com/?count=0
Success, body was 45855 bytes
Requesting https://google.com/?count=1
Success, body was 45861 bytes
Requesting https://google.com/?count=2
Success, body was 45864 bytes
Requesting https://google.com/?count=3
Success, body was 45875 bytes
Requesting https://google.com/?count=4
Success, body was 45859 bytes
Requesting https://google.com/?count=5
Success, body was 45851 bytes
Requesting https://google.com/?count=6
Success, body was 45882 bytes
Requesting https://google.com/?count=7
Success, body was 45843 bytes
Requesting https://google.com/?count=8
Success, body was 45892 bytes
Requesting https://google.com/?count=9
Requesting https://google.com/?count=9
Success, body was 45835 bytes
Requesting https://google.com/?count=10
Success, body was 45885 bytes
Requesting https://google.com/?count=11
Success, body was 45865 bytes
Requesting https://google.com/?count=12
Success, body was 45851 bytes
Requesting https://google.com/?count=13
Success, body was 45859 bytes
Requesting https://google.com/?count=14
Success, body was 45905 bytes
Requesting https://google.com/?count=15
Success, body was 45848 bytes
Requesting https://google.com/?count=16
Success, body was 45896 bytes
Requesting https://google.com/?count=17
Success, body was 45879 bytes
Requesting https://google.com/?count=18
Success, body was 45877 bytes
Requesting https://google.com/?count=19
Success, body was 45844 bytes
Вы могли бы легко разобрать следующий URL в ответе then()
, если бы у вас был сервер, который вел себя таким образом.Я добавил счет, чтобы предотвратить бесконечную рекурсию.