async
Set this Boolean attribute to indicate that the browser should, if possible, execute the script asynchronously. It has no effect on inline scripts (i.e., scripts that don't have the src attribute).
Это только для асинхронной загрузки файла скрипта, а не исполнения кода. JavaScript однопоточен
Так как у вас не система реального времени и поэтому android переключается между задачами(запущенными приложениями). Как появилась возможность, так и выполнил ваш метод.
Вам не гарантируется, что будет выполнено ровно через 100 мс, но гаранитируется, что выполнится не раньше чем через 100 мс.
Создайте таблицы:
1. Наименование свойства (id, name, goodid - товар)
Пример: 222, "Цвет", 333
2. Возможные значения (id, propid, value)
Пример: 1, 222, Черный
2, 222, Белый
И то что
3. Введут пользователи: (id, userid, propvalueid, goodid - это поле уже избыточно)
Все ваши варианты вы рассматриваете из контекста "вкладываю большие ресурсы, и может быть выстрелит".
А за хороший продукт люди готовы платить на стадии идей, посмотрите сколько вокруг краудфандинговых платформ появилось.
Поэтому путь должен быть следующий:
1. Минимальное вложение в сайт для создания минимального функционала.
2. Получение денег от довольного клиента в виде предоплаты.
3. Вложение полученных средств в развитие продукта.
Если идея стоящая, то деньги появятся, нет - так и зачем на нее тратить большие ресурсы, пусть умирает.
При добавлении записей в локальную таблицу устанавливайте им id выше 1 млрд.
Когда появиться коннект, то сделайте выборку по таким данным и отправьте их на сервер.
Верните результат [{oldid, newid}, ...] и сделайте апдейт id для записей.
В серверной БД еще добавьте поле "время последнего обновления", это чтобы получать с сервера
только измененные данные.
У вас была сторона длиной D, вы ее повернули на угол N.
У вас получился прямоугольный треугольник.
И соответственно вам нужны лишь "Тригонометрические функции острого угла"