Доброго времени суток!
делаю задание из универа (ссылка на
codepen) и не могу разобраться как написать функцию для 2го, 3го и 4го .job, для первого все отрабатывает а дальше ошибка:
Uncaught TypeError: runner.job is not a function
вот что я написал:
<script>
function Parallel(setings) {
this.parallelJobs = setings;
this.job = function (step){
step();
};
};
</script>
пробовал еще вот так, но тоже ошибка на 2м .job
Uncaught TypeError: Cannot read property 'job' of undefined
<script>
function Parallel(setings) {
this.parallelJobs = setings;
};
Parallel.prototype = {
done: function () {
alert('Вызван done');
},
job: function (step) {
return step();
}
};
</script>
Код снизу нельзя править, это условие задания универа. Тыкните, плиз, в нужное направление
<script>
/************************************************
* Please don`t change the code bellow this line *
************************************************/
var runner = new Parallel({
//the number of simultaneously possible jobs, other jobs should be placed in queue.
parallelJobs: 2
});
runner.job(step1)
.job(step2)
.job(step3)
.job(step4)
.done(onDone);
function step1(done) {
console.log('step1');
for ( let i = 0; i <= 10e4; i++ ) ;
console.log('end step1 cicle');
setTimeout(done, 1000, 'hello world');
}
function step2(done) {
console.log('step2');
for ( let i = 0; i <= 10e2; i++ ) ;
console.log('end step2 cicle');
setTimeout(done, 1200, 'Job succeded');
}
function step3(done) {
console.log('step3');
for ( let i = 0; i <= 10e3; i++ ) ;
console.log('end step3 cicle');
setTimeout(done, 1500, 'step3');
}
function step4(done) {
console.log('step4');
for ( let i = 0; i <= 10e1; i++ ) ;
console.log('end step4 cicle');
setTimeout(done, 100, 'step4');
}
var isPassed = false;
function onDone(results) {
console.log('onDone', results);
console.assert(Array.isArray(results), 'expect result to be array');
console.assert(results[0] === 'hello world', 'Wrong answer 1');
console.assert(results[1] === 'Job succeded', 'Wrong answer 2');
console.assert(results[2] === 'step3', 'Wrong answer 3');
console.assert(results[3] === 'step4', 'Wrong answer 4');
console.log('Thanks, all works fine');
isPassed = true;
}
setTimeout(function () {
if ( isPassed ) return;
console.error('Test is not done.');
}, 10000);
</script>
на
codepen