`${new Date().getFullYear() - 2005} years with Javascript`
Promise.finally()
also async class methods
+abortcontroller
for await (const doc of asyncIterable) {
console.log(doc.name);
}
is a collection of keyed data items, just like an Object. But the main difference is that Map allows keys of any type.
let john = { name: "John" };
let map = new Map();
map.set(john, "...");
john = null;
console.log(map.size); //1
is a collection of keyed data items, just like an Object. But the main difference is that Map allows keys of any type.
let john = { name: "John" };
let map = new WeakMap();
map.set(john, "...");
john = null;
console.log(map.size); //undefined
!WeakMap does not support iteration and methods keys(), values(), entries(), so there’s no way to get all keys or values from it.
navigator.serviceWorker.register("/sw.js")
const version = "1.3.1";
const cacheName = `my-app-name-${version}`;
self.addEventListener('install', e => {
const timeStamp = Date.now();
e.waitUntil(
caches.open(cacheName).then(cache => {
return cache.addAll([
`/`,
`/index.html`,
`/app.js`,
...
]).then(() => self.skipWaiting());
})
);
});
self.addEventListener('activate', event => {
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.open(cacheName)
.then(cache => cache.match(event.request, {ignoreSearch: true}))
.then(response => {
return response || fetch(event.request);
})
);
});
while (queue.waitForMessage())
queue.processNextMessage();
console.log('START')
setTimeout(_ => console.log('setTimeout'));
Promise.resolve().then(_ => console.log('Promise'));
requestAnimationFrame(_ => console.log('RAF'))
console.log('FINISH')
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
const microtaskQueue = eventLoop.microTaskQueue
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask()
}
}
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
const microtaskQueue = eventLoop.microTaskQueue
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask()
}
if (shouldRender()) {
applyScrollResizeAndCSS()
runAnimationFrames()
render()
}
}
A large JavaScript application is a non-trivial application that requires significant effort to maintain and where most of the data manipulation takes place in the browser.
Addy Osmani
Chat
Messages
Menu
Search
Menu
Chat
Messages
TurboFan changed the rules!
Hvala vam na pažnji