'строка'.replace(/[\[\]\(\)\/\.\$\*\+\|\^]/g,'\\$&'); // v3.0
const text = ':)test'
const reg = new RegExp(text.replace(/[\[\\\\/^\$\.\|\?\*\+\(\)\]]/g,'\\$&'), 'g'),
userApi.findById(ids[i]).then((err, user) => {})
users (ids) {
return new Promise((resolve, reject) => {
let users = {dd: 'ff'}
let icount = 0;
for (let i = 0; i < ids.length; i++) {
userApi.findById(ids[i]).then((err, user) => {
users[user.id] = user
icount ++;
if(icount === ids.length - 1) {
resolve(users)
}
})
}
})
}
for (let i = 0; i < ids.length; i++) {
userApi.findOne(ids[i]).then((user) => { // выполняется запрос в БД ids.length - 1 раз ОДНОВРЕМЕННО (т.к. асинхронность и не нужно ждать)
users[user.id] = user // только тут что-то возвращается ЧЕРЕЗ ВРЕМЯ из БД
// p.s. только т.к. нужны аргументы (err, user), то в users[user.id] = user на самом деле записывается переменная error, а не user
})
} // выходит из цикла, т.к. все запросы он отправил (НО не получил ещё ответы)
resolve(users) // сразу после выполнения цикла отправляет users (но ответ даже на первый запрос ещё не пришёл)
var boxes = $('.box');
boxes.each(function () {
var $box = $(this);
// Засуньте сюда весь ваш код, который нужен отдельно для каждого чекеда.
// Только не надо функции выносить. Функции не должны ссылаться на глобальные переменные,
// все элементы вы должны передавать через аргументы.
// Дальше ищите элементы относительно $box. Например, вам нужен .handle, просто
// пишите $box.find('.handle') - так вы получите только элементы с классом handle, которые
// находятся внутри текущего бокса.
});
перед запуском хотелось бы его протестировать на дыры и уязвимости.
а на обычном микрофреймворке, в котором изначально была концепция mvc
Какие дыры могут быть на сайтах?
грубо говоря для них сайт в рид онли