Pull to refresh

Асинхронный JavaScript (книга)

Reading time2 min
Views29K
image
Ответьте на три вопроса по JavaScript. Если какой-то из них вас затруднит, вам следует прочесть отличную книгу Тревора Бернхема (Trevor Burnham) — Async JavaScript. Всего 90 страниц, но здесь разобраны такие темы, как событийный цикл JavaScript, синхронность/асинхронность, однопоточность/многопоточность (воркеры), promises, fibers и еще много чего интересного.

Итак, что выдаст следующий код?
for (var i = 1; i <= 3; i++) {
    setTimeout(function(){ console.log(i); }, 0);
};

Ответ
4
4
4

UPD Второй вопрос убран — различная реализация в браузерах.

Сколько (примерно) раз сработает setInterval(func, 0) за секунду в браузере?
var fireCount = 0;
var start = new Date;
var timer = setInterval(function() {
    if (new Date - start > 1000) { 
        clearInterval(timer);
        console.log(fireCount);
        return;
    }   
    fireCount++;
}, 0);

Ответ
Не больше 250 (скорее всего 240-250)

Если интересно почему именно так — ответы есть в книге.

Содержание
  • Introduction
    • Trouble in Paradise
    • Who Is This Book For?
    • Resources for Learning JavaScript
    • Where to Turn for Help?
    • Running the Code Examples
    • Code Style in This Book
    • A Word on altJS
    • Resources for This Book

  • Understanding JavaScript Events
    • Scheduling Events
    • Types of Async Functions
    • Writing Async Functions
    • Handling Async Errors
    • Un-nesting Callbacks
    • What We’ve Learned

  • Distributing Events
    • PubSub
    • Evented Models
    • Custom jQuery Events
    • What We’ve Learned

  • Promises and Deferreds
    • A Very Brief History of Promises
    • Making Promises
    • Passing Data to Callbacks
    • Progress Notifications
    • Combining Promises
    • Binding to the Future with pipe
    • jQuery vs. Promises/A
    • Replacing Callbacks with Promises
    • What We’ve Learned

  • Flow Control with Async.js
    • The Async Ordering Problem
    • Async Collection Methods
    • Organizing Tasks with Async.js
    • Dynamic Async Queuing
    • Minimalist Flow Control with Step
    • What We’ve Learned

  • Multithreading with Workers
    • Web Workers
    • Node Workers with cluster
    • What We’ve Learned

  • Async Script Loading
    • Limitations and Caveats
    • Reintroducing the <script> Tag
    • Programmatic Loading
    • What We’ve Learned

  • Tools for Taming JavaScript
    • TameJS
    • StratifiedJS
    • Kaffeine
    • Streamline.js
    • Node-Fibers
    • The Future of JavaScript: Generators

Tags:
Hubs:
Total votes 50: ↑36 and ↓14+22
Comments22

Articles