- The setTimeout function in JavaScript is used to execute a function or a specified piece of code after a certain delay (measured in milliseconds). It is part of the browser's Web APIs, specifically the WindowOrWorkerGlobalScope mixin.
- Syntax
let timeoutID = setTimeout(function, delay, [arg1, arg2, ...]);
- function: The function to be executed after the delay.
- delay: The time, in milliseconds, to wait before executing the function. (1 second = 1000 milliseconds)
- [arg1, arg2, ...]: Optional arguments to pass to the function when it is executed.
- Basic Example
setTimeout(() => {
console.log("This message is displayed after 3 seconds.");
}, 3000);
- In this example, the message "This message is displayed after 3 seconds." will be logged to the console after 3 seconds.
1. Passing Arguments to the Callback Function
function greet(name) {
console.log(`Hello, ${name}!`);
}
setTimeout(greet, 2000, 'Gagan');
- Here, the `greet` function is called with the argument 'Gagan' after 2 seconds.
- The `setTimeout` function returns a unique identifier (ID) for the timeout, which can be used to cancel the timeout using the `clearTimeout` function.
let timeoutID = setTimeout(() => {
console.log("This will not be displayed.");
}, 5000);
// Cancel the timeout
clearTimeout(timeoutID);
- In this case, the timeout is cancelled before it can execute, so the message will not be displayed.
- You can use anonymous functions directly within `setTimeout`.
setTimeout(function () {
console.log("This is an anonymous function.");
}, 1000);
- You can chain timeouts to create a sequence of actions.
setTimeout(() => {
console.log("First message");
setTimeout(() => {
console.log("Second message");
}, 2000);
}, 1000);
- This will log "First message" after 1 second and "Second message" 2 seconds after the first message.
1. Explain how `setTimeout` works.
Executed after current stack.
- setTimeout schedules a function to run after a specified delay. It does not block the main thread; instead, it puts the function in the event queue after the delay.
- Setting the delay to 0 means the function will be executed as soon as possible but still after the current execution context completes. It is often used to defer execution until the call stack is clear.
setTimeout(() => {
console.log("Executed after current stack.");
}, 0);
console.log("Executed first.");
- Output:
Executed after current stack.
3. How to create a recurring action using `setTimeout`?
4. Differences between `setTimeout` and `setInterval`.
5. How to handle `this` context in `setTimeout`?
Conclusion
- To create a recurring action, you can recursively call `setTimeout` inside the callback function.
function recurringAction() {
console.log("This action repeats every second.");
setTimeout(recurringAction, 1000);
}
setTimeout(recurringAction, 1000);
- setInterval repeatedly calls a function with a fixed time delay between each call, whereas setTimeout calls a function once after a specified delay.
// Using setInterval
setInterval(() => {
console.log("This message repeats every 2 seconds.");
}, 2000);
// Equivalent using setTimeout
function repeatAction() {
console.log("This message repeats every 2 seconds.");
setTimeout(repeatAction, 2000);
}
setTimeout(repeatAction, 2000);
- When using `setTimeout` inside an object method, `this` may not refer to the object as expected. Use arrow functions or `bind` to preserve the `this` context.
const obj = {
name: 'Gagan',
greet: function () {
setTimeout(() => {
console.log(`Hello, ${this.name}`);
}, 1000);
}
};
obj.greet(); // Output: Hello, Gagan
- Understanding `setTimeout` and its variations is essential for handling asynchronous operations in JavaScript. It helps in scheduling tasks, creating delays, and managing timed events, which are crucial for building responsive and performant web applications.
No comments:
Post a Comment