В моем предыдущем посте мне удалось решить мою проблему с Обещанием, просмотрев некоторые примеры, предоставленные этим сообществом.Я надеюсь, что этот вопрос тоже будет легко решить, хотя я просто не могу разобраться с этим.Впервые в жизни я чувствую, что бегло говорить на языке PHP - это бремя.
Мой код выглядит так:
let getProducts = function(){
countProducts
.then(function(number){
var name = '';
let list = [];
getProductNames(name)
.then(function(names){
names.forEach(function(el){
list.push(el);
});
name = list.pop();
getProductNames(name)
.then(function(names){
names.forEach(function(el){
list.push(el);
});
... and some more code to put the names in a table
функция getProductNames выглядит следующим образом:
var getProductNames =
function(name) {
return new Promise(
function(resolve, reject){
xyz.api.checkProducts(name, 1000, function(err, names){
if (err){
reject(err);
} else {
resolve(names);
}
});
}
);
}
Это работает, потому что я знаю, что у меня менее 2000 продуктов, каждая проверка возвращает 1000 продуктов, поэтому мне нужно дважды запустить функцию getProductNames.
То, что я ищу, - это способ сделатьэто в цикле, так что он автоматически запускает необходимое количество запусков.
Проблема с вызовом API заключается в том, что для начала требуется имя продукта.Первый прогон без имени, это возвращает первую 1000. Для второго прогона мне нужно последнее найденное имя продукта прогона 1, для прогона 3 мне нужно последнее найденное имя продукта 2 и так далее.
Существуют различные способы определить, нужен ли еще один прогон:
- сравнить длину массива с числом созданных продуктов
- определить количество прогонов заранее.деление числа countПродукты, сгенерированные на 1000 (ceil ())
- сравнить последнее найденное имя с новым последним найденным именем
Я просто не знаю, как выполнить цикл и где.Я предполагаю, что решение найдено путем добавления вспомогательной функции, но когда я пытаюсь это сделать, я попадаю в значения, недоступные и т. Д.
Вам не нужно решать мою проблему, но я бы оченьблагодарен, если кто-нибудь может привести пример необходимой структуры или какой-либо интернет-источник, описывающий эту структуру.В найденных мной примерах не используются значения из предыдущих прогонов.