- Web Development with MongoDB and Node(Third Edition)
- Bruno Joseph D'mello Mithun Satheesh Jason Krol
- 381字
- 2021-07-08 10:32:45
Anonymous functions and callbacks
Often, you will need to use a temporary function that you don't necessarily want to declare ahead of time. In this type of scenario, you can use an anonymous function, which is simply a function that is declared at the time you need it. This is similar to the function expression context we explored earlier, with a simple difference that the function isn't assigned to a variable so it has no way of being referenced to later. The most common use of anonymous functions is when they are defined as a parameter to another function (most notably when used as a callback).
One of the most common places to use an anonymous function (which also acts as a callback even if you didn't realize it) is with setTimeout or setInterval. These are two standard JavaScript functions that will execute code after a specified delay (in milliseconds) or repeat the execution of code after a specified delay. Here is an example of one of them, setTimeout, using an anonymous inline function:
console.log('Hello...'); setTimeout(function() { console.log('World!'); }, 5000); // => Hello... // (5000 milliseconds i.e. 5 second delay) // => World!
You can see that the anonymous function was passed as the first parameter to setTimeout because setTimeout expects a function. You can, if you desire, declare the function ahead of time as a variable and pass that to setTimeout instead of the inline anonymous function:
var sayWorld = function() { console.log('World!'); } setTimeout(sayWorld, 5000); // (5 second delay) // => World!
The anonymous function just acts as a clean inline disposable function.
Callbacks are important because one of the most powerful (and confusing) features of JavaScript is that it's asynchronous. This means that every line executes sequentially, but it doesn't wait around for code that might be taking longer than it should (even if by design). We have explored this via an example in the first chapter while looking into the asynchronous nature of Node.js.
- 玩轉(zhuǎn)Scratch少兒趣味編程
- Designing Machine Learning Systems with Python
- Python爬蟲開發(fā):從入門到實(shí)戰(zhàn)(微課版)
- Developing Middleware in Java EE 8
- 技術(shù)領(lǐng)導(dǎo)力:程序員如何才能帶團(tuán)隊(duì)
- Python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)
- C語言實(shí)驗(yàn)指導(dǎo)及習(xí)題解析
- TradeStation交易應(yīng)用實(shí)踐:量化方法構(gòu)建贏家策略(原書第2版)
- Rust Essentials(Second Edition)
- Python Essentials
- Instant GLEW
- Elasticsearch Blueprints
- AngularJS UI Development
- SQL Server 2008實(shí)用教程(第3版)
- Unity 3D UI Essentials