Не успел Ваш ответ прочитать...
Может Вы и правы. Сейчас еще такой вариант думаю: скрипт проверит количество товаров в файле и в зависимости от этого 2 варианта: Если товаров в файле меньше, например, 1000, то сразу тут же и мпортирует, а если больше, то добавит задачу в БД для планировщика, а пользователю напишет что импорт осуществляется, Вы получите на почту сообщение о его окончании. Хотя, а если, как вы говорите, одновременно 10 пользователей начнут грузить по 900 товаров... |
Lion_astana, ответ на ваш начальный вопрос... Поскольку ваша функция func2 возвращает булево значение, то вы её результат можете использовать в цикле while
<button id="btn">Click me</button> <p id="info"></p> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> const button = $("#btn"); const info = $("#info"); button.on("click", func1); async function func1() { button.prop("disabled", true); info.text(""); while(await func2()) { info.append("true "); } info.append("end"); button.removeAttr("disabled"); } async function func2() { try { /* микросервис, который возвращает false в 25% случаев и true — 75% */ const answer = await $.get("https://charm-launch.glitch.me/random/boolean/0.25"); return answer; } catch(error) { /* если произойдёт ошибка, то возможно вы её захотите обработать как-то по другому */ return false; } } </script> |
Спасибо всем. Сделал немного по-другому: если товаров меньше 500, то они грузятся сразу все вместе с фото. Если больше 500, то товары все в базу сохраняются, а вместо фото путь к картинки из YML файла пользователя. Затем, скриптом не спеша проходимся и загружаем фото к себе на сервер по пути, который есть у каждого товара.
|
Часовой пояс GMT +3, время: 22:29. |