Жигалов Сергей
function grist() {
return 'Перемолоть кофейные зерна';
}
function addWater() {
return 'Добавить немного воды';
}
function toStove() {
return 'Поставить на плиту';
}
grist();
addWater();
toStove();
grist(); // 'Перемолоть кофейные зерна'
addWater();
toStove();
grist(); // 'Перемолоть кофейные зерна'
addWater(); // 'Добавить немного воды'
toStove();
grist(); // 'Перемолоть кофейные зерна'
addWater(); // 'Добавить немного воды'
toStove(); // 'Поставить на плиту'
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
prepareCoffee
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
toStove
prepareCoffee
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
prepareCoffee
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
function toStove() {
throw new Error('No electricity');
}
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
Uncaught Error: No electricity
at toStove (<anonymous>:2:11)
at prepareCoffee (<anonymous>:6:5)
at toCheerUp (<anonymous>:10:5)
at <anonymous>:13:1
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
prepareCoffee
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
toStove
prepareCoffee
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
prepareCoffee
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
toCheerUp
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
anonymous
function prepareCoffee() {
toStove();
}
function toCheerUp() {
prepareCoffee();
}
toCheerUp();
setTimeout(func[, delay, param1, param2, ...]);
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
anonymous
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
fromStove
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function fromStove() {
return 'Снять с плиты';
}
toStove();
setTimeout(fromStove, 5000);
'Поставить на плиту'
'Снять с плиты'
setInterval(func[, delay, param1, param2, ...]);
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
anonymous
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
'Поставить на плиту'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
fromStove
'Поставить на плиту'
'Помешивать'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
'Поставить на плиту'
'Помешивать'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
fromStove
'Поставить на плиту'
'Помешивать'
'Помешивать'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
'Поставить на плиту'
'Помешивать'
'Помешивать'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
fromStove
'Поставить на плиту'
'Помешивать'
'Помешивать'
'Помешивать'
function toStove() {
return 'Поставить на плиту';
}
function toStir() {
return 'Помешивать';
}
toStove();
setInterval(toStir, 1000);
'Поставить на плиту'
'Помешивать'
'Помешивать'
'Помешивать'
var id = setInterval(fromStove, 1000);
clearInterval(id);
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
anonymous
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
'Поставить на плиту'
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
'Поставить на плиту'
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
'Поставить на плиту'
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
fromStove
'Поставить на плиту'
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
fromStove fromStove
'Поставить на плиту'
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
fromStove fromStove fromStove
'Поставить на плиту'
function toStir() {
return 'Помешивать';
}
console.log('Поставить на плиту');
setInterval(toStir, 1000);
executionThreeSeconrs();
'Поставить на плиту'
'Помешивать'
'Помешивать'
'Помешивать'
function toStir() {
console.log('Помешивать');
setTimeout(toStir, 1000);
};
toStir();
function beHappy() {
return 'Насладиться результатом';
}
setTimeout(beHappy, 0);
console.log('Много-много синхронных дел');
function beHappy() {
return 'Насладиться результатом';
}
setTimeout(beHappy, 0);
console.log('Много-много синхронных дел');
anonymous
function beHappy() {
return 'Насладиться результатом';
}
setTimeout(beHappy, 0);
console.log('Много-много синхронных дел');
beHappy
function beHappy() {
return 'Насладиться результатом';
}
setTimeout(beHappy, 0);
console.log('Много-много синхронных дел');
beHappy
'Много-много синхронных дел'
function beHappy() {
return 'Насладиться результатом';
}
setTimeout(beHappy, 0);
console.log('Много-много синхронных дел');
beHappy
'Много-много синхронных дел'
'Насладиться результатом'
var fs = require('fs');
var fileName = __dirname + '/data.json';
var data = fs.readFileSync(fileName, 'utf-8');
console.log(data);
'{"name": "Sergey"}'
var fs = require('fs');
var fileName = __dirname + '/data.json';
console.time('readFileSync');
var data = fs.readFileSync(fileName, 'utf-8');
console.timeEnd('readFileSync');
console.log(data);
readFileSync: 3ms
'{"name": "Sergey"}'
var fs = require('fs');
var fileName = __dirname + '/bigData.mov';
console.time('readFileSync');
var data = fs.readFileSync(fileName, 'utf-8');
console.timeEnd('readFileSync');
console.log(data);
readFileSync: 3567ms
<много текста>
Во время синхронных операций не обрабатываются другие события: таймеры, пользовательские события и тп
var fs = require('fs');
var fileName = __dirname + '/data.json';
var data = fs.readFile(fileName, 'utf-8');
console.log(data);
undefined
var fs = require('fs');
var fileName = __dirname + '/data.json';
fs.readFile(fileName, 'utf-8', function (err, data) {
console.log(data);
});
'{"name": "Sergey"}'
function cb(err, data) {
}
function cb(err, data) {
if (err) {
console.error(err.stack);
}
}
function cb(err, data) {
if (err) {
console.error(err.stack);
} else {
console.log(data);
}
}
var fs = require('fs');
fs.readFile('data.json', function (err, data) {
if (err) {
console.error(err.stack);
} else {
console.log(data);
}
});
var fs = require('fs');
fs.readFile('data.json', function (err, data) {
if (err) {
console.error(err.stack);
} else {
fs.readFile('ext.json', function (e, ext) {
if (e) {
console.error(e.stack);
} else {
console.log(data + ext);
}
});
}
});
var fs = require('fs');
function readTwoFiles(cb) {
var tmp;
fs.readFile('data.json', function (err, data) {
if (tmp) {cb(err, data + tmp);}
else { tmp = data; }
});
fs.readFile('ext.json', function (err, data) {
if (tmp) {cb(err, tmp + data);}
else { tmp = data; }
});
}
var fs = require('fs');
function readTwoFiles(cb) {
var tmp;
fs.readFile('data.json', function (err, data) {
if (tmp) {cb(err, data + tmp);}
else { throw Error('Mu-ha-ha!'); }
});
fs.readFile('ext.json', function (err, data) {
if (tmp) {cb(err, tmp + data);}
else { tmp = data; }
});
}
function readTwoFiles(cb) {
async.parallel([
fs.readFile.bind(fs, 'data.json'),
fs.readFile.bind(fs, 'ext.json')
], function (err, data) {
cb(err, data[0] + data[1])
});
}
fs.readFile('data.json', function (err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
fs.readFile('data.json', function (err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
fs.readFile('data.json', function (err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
var promise = new Promise(function (resolve, reject) {
});
var promise = new Promise(function (resolve, reject) {
fs.readFile('data.json', function (err, data) {
});
});
var promise = new Promise(function (resolve, reject) {
fs.readFile('data.json', function (err, data) {
if (err) {
reject(err);
}
});
});
var promise = new Promise(function (resolve, reject) {
fs.readFile('data.json', function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
promise.then();
promise.then(function (data) {
console.log(data)
});
promise.then(function (data) {
console.log(data)
}, function (err) {
console.error(err);
});
promise.then(console.log, console.error);
var promise = new Promise(function (resolve, reject) {
fs.readFile('data.json', function (err, data) {
if (err) {
reject(err);
} else {
throw new Error('Mu-ha-ha!');
}
});
});
promise.then(console.log, console.error);
[Error: Mu-ha-ha!]
function identity(data) {
return data;
}
function thrower(err) {
throw err;
}
promise
.then(console.log, thrower)
.then(identity, console.error);
promise
.then(JSON.parse, thrower)
.then(identity, getDefault)
.then(getAvatar, thrower)
.then(identity, console.error);
function getDefault() {
return { name: 'Sergey' };
}
function getAvatar (data) {
var name = data.name;
return request('https://my.avatar/' + name);
}
promise
.then(JSON.parse, thrower)
.then(identity, getDefault)
.then(getAvatar, thrower)
.then(identity, console.error);
promise
.then(JSON.parse, thrower)
.then(identity, getDefault)
.then(getAvatar, thrower)
.then(identity, console.error);
promise
.then(JSON.parse)
.catch(getDefault)
.then(getAvatar)
.catch(console.error);
promise
.then(JSON.parse)
.then(getAvatar);
не то же самое, что
promise.then(JSON.parse);
promise.then(getAvatar);
function readFile(name) {
return new Promise(function (resolve, reject) {
fs.readFile(name, function (err, data) {
err ? reject(err) : resolve(data);
});
});
}
Promise
.all([
readFile('data.json'),
readFile('ext.json')
])
.then(function (data) {
console.log(data[0] + data[1])
});
Promise
.resolve('{"name": "Sergey"}')
.then(console.log);
'{"name": "Sergey"}'
Promise
.reject(new Error('Mu-ha-ha!'))
.catch(console.error);
[Error: Mu-ha-ha!]