exports.get=function* (next){
const ctx=this;
let sql = "SELECT * FROM clients_forums_knowledge_base ORDER BY orders ASC";
let forumsKnowledgeBase = yield ctx.locals.db.query(sql);
for(let idx = 0, n = forumsKnowledgeBase.length; idx < n; idx++) {
let elem = forumsKnowledgeBase[idx];
let sql='SELECT clients_knowledge_base.name, clients_knowledge_base.id,clients_knowledge_base.file FROM clients_knowledge_base,clients_forums_knowledge_base WHERE clients_forums_knowledge_base.id = clients_knowledge_base.forum AND clients_knowledge_base.forum = ? ORDER BY name ASC';
let rows = yield ctx.locals.db.query(sql,elem.id);
elem.items=rows ;
}
};
gulp.task('sass', function() {
var processors = [
autoprefixer({browsers: ['last 10 versions'], cascade: false}),
mqpacker({
sort: function (a, b) {
a = a.replace(/\D/g,'');
b = b.replace(/\D/g,'');
return b-a;
// replace this with a-b for Mobile First approach
}
})
];
gulp.src(config.src.sass+'*.sass')
.pipe(sass({outputStyle: 'compact', sourcemap: true}).on('error', notify.onError({
title: 'Sass Error!',
message: '<%= error.message %>'
})))
.pipe(postcss(processors))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(config.dest.css));
});
function F(cb) {
this.n = 'name';
if(typeof cb === 'function') {
cb.call(this);
}
}
var of = new f(function() {
console.log(1);
});
var i = 0; //инициализация
!function next(exit) {
if(i >= 5) return exit(); //выход из цикла, в отличии от цикла for проверяем обратное условие
//выполняем что-то в цикле
alert(i);
//обновляем счетчик и запускаем следующую итерацию, в нашем случае она будет обернута в setTimeout
i++;
setTimeout(next, 1000, exit);
}(function() {
//здесь пишем код, который должен выполняться по завершении цикла
});