function(done) {
setTimeout(function() {
done('result');
}, duration);
};
new Promise(resolve => {
setTimeout(resolve, duration, 'result');
});
function all(promises, done) {
const results = [];
let count = promises.length;
const checkDone = () => {
if (--count === 0) done(results);
};
promises.forEach((p, i) => {
p.then(x => results[i] = x).then(checkDone);
});
}
function promiseAll(promises) {
return new Promise(resolve => {
const results = [];
let count = promises.length;
const checkDone = () => {
if (--count === 0) resolve(results);
};
promises.forEach((p, i) => {
p.then(x => results[i] = x).then(checkDone);
});
});
}
async enableCropper() {
await this.preview({});
console.log('Все готово');
},
async preview(params) {
const { data } = await axios.post('/api/images/preview', params, {
responseType: 'blob',
});
await this.loadImage(data);
},
loadImage(src) {
return new Promise(resolve => {
const reader = new window.FileReader();
reader.readAsDataURL(src);
reader.onload = () => {
this.$refs.cropper.replace(reader.result);
console.log('Картинка готова');
resolve();
};
});
},
users.push(this.user);
let lastUser = users[users.length - 1];
function decorator(f) {
return function() {
f.apply(this, arguments);
console.log(f.name + ' is called!');
}
}
function foo() {
console.log('I am foo!');
}
const bar = decorator(foo);
bar(); // I am foo! \n foo is called!
function foo() {
foo.isRunning = true;
// do something
}
function bar() {
if (!foo.isRunning) {
return foo();
}
// do something other
}
var textarea = document.querySelector('.textarea-field textarea');
console.log('tag name', textarea.tagName); // TEXTAREA
console.log('tag name to lowercase', textarea.tagName.toLowerCase()); // textarea
var arrValue = JSON.parse(sessionStorage[key]);
interface AppStorage {
get: (key: string) => any;
set: (key: string, value: any, options: any) => void;
delete: (key: string) => void;
}
const obj = {};
_.set(obj, 'user.id', 5);
console.log(obj); // { user: { id: 5 } }
const test = config => someAsyncCall().then(bar => ({ ...config, bar }));
const config = { foo: 123 };
test(config).then(console.log); // { foo: 123, bar: 456 };
const test = async function(config) {
const bar = await someAsyncCall(); // returns 456
return { ...config, bar };
}
(async () => {
const config = { foo: 123 };
const newConfig = await test(config);
console.log(newConfig); // { foo: 123, bar: 456 };
})();
ssr - это когда первая страница, которую запрашивает клиент, генерируется на сервере, а дальнейшая навигация по сайту происходит как в обычном spa, то есть идёт Аякс запрос и открывается страница.
При переходах между страницами сайта не происходит никаких аякс запросов!
Выходит, что при переходах по роутам нода как то генерирует страницы? И не только самая первая страница возвращается с сервера отрендереной, но и каждая последующая?