- 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.
- Qt 5 and OpenCV 4 Computer Vision Projects
- PyTorch自然語言處理入門與實戰
- Learning Linux Binary Analysis
- 從學徒到高手:汽車電路識圖、故障檢測與維修技能全圖解
- 零基礎入門學習Python
- AppInventor實踐教程:Android智能應用開發前傳
- Extending Puppet(Second Edition)
- Mastering Business Intelligence with MicroStrategy
- 詳解MATLAB圖形繪制技術
- Android傳感器開發與智能設備案例實戰
- 零基礎學Python編程(少兒趣味版)
- Robot Framework Test Automation
- Android技術內幕(系統卷)
- Mastering OpenStack
- Building a Media Center with Raspberry Pi