Я пытаюсь найти базовый веб-искатель. Стек отслеживает все URL-адреса для посещения в будущем.Как вызвать эту функцию рекурсивно?
До тех пор, пока стек не станет пустым, вы хотите получить список всех hrefs, используемых на веб-странице. Пытались использовать arguments.calee но он возвращает: (! Или любой Promise цепи, на самом деле)
RangeError: Maximum call stack size exceeded
JavaScript
"checkStack": function(test) {
//check if the stack is empty
if (!stack.isEmpty()) {
var newAddress = stack.pop();
console.log("trying to navigate to: ", newAddress);
return test.remote.get(newAddress)
.setFindTimeout(240000)
//.sleep(4000)
.findAllByTagName("a")
.getAttribute("href")
.then(function(hrefs) {
console.log("got hrefs: " + hrefs.length);
assert.isArray(hrefs, 'Links not an array');
checkAddressValidity(hrefs, 0);
})
.then(function() {
//call checkStack recursively
checkStack(test);
}.bind(test));
}
},
...
Это выглядит странно для меня: 'функцию() {checkStack (тест); } .bind (тест) '. Кажется, вы привязываетесь к аргументу функций? Может быть, вы должны привязаться к области, где вместо этого находится «checkStack». Может быть, более полный пример. –