хуйу нас не матерятся
Совсем недавно я проходил пачку интервью в несколько крупных компаний. Это будет небольшой сборник задач, которые меня просили решить прям на интервью.
function parallel(funcArray, doneAll) {
}
var a = function(done) {
setTimeout(function() {
done('result a');
}, 300);
};
var b = function(done) {
setTimeout(function() {
done('result b');
}, 200);
};
parallel([a,b], function(results) {
console.log(results); // ['result a', 'result b']
});
Нужно её дописать. Что-то вроде аналога promise.all. И не забудьте, что результирующий массив должен сохранять тот порядок, в котором передавались функции.
console.log('1');
setTimeout(function() {
console.log('2')
}, 0);
Promise.resolve().then( () => console.log('3') );
console.log('4');
sum(1)() // 1
sum(1)(2)() // 3
sum(1)(2)(-1)() // 2
И так далее.
function makeDroids() {
var droids = [];
/* test */
for (var i = 0; i < 10; i++) {
var droid = function() {
console.log("R2D" + i);
};
droids.push(droid);
}
/* test */
return droids;
}
for (let d of makeDroids()) {
d();
}
Он выводит в консольлог 10 раз "R2D10", почему? Как его переписать, чтобы в консольлог выводилось:
"R2D0"
"R2D1"
"R2D2"
"R2D3"
"R2D4"
"R2D5"
"R2D6"
"R2D7"
"R2D8"
"R2D9"
function tack() {
console.log('tick');
this.tack = function() {
console.log('tack');
};
this.tick = function() {
this.tack();
};
}
var tick = new tack();
setTimeout(tick.tick, 10);
Были ещё задачи, которые я уже забыл. Если вспомню, допишу.
Спасибо большое за интересные задачи) Увы навыков не хватает чтобы решить первую, интересно было бы посмотреть на решение)
Это будет не спартивно)) В первой задаче всё просто, главное понять как работает стандартный Promise.all
nikak ne mogu sohranit' poryadok v pervoy zadache, a tak bomba razmyat' golovu zada4ki))
Интересные задачки и вопросы, освежил знания по event loop и определению контекста this. Спасибо.