An in-depth analysis of callback in Node.js asynchronous programming
Jul 06, 2021 am 11:30 AMThe running results of non-blocking I/O require a callback function to receive. The following article will give you a detailed introduction to Node.jscallback (callback) in asynchronous programming.
[Recommended study: "nodejs Tutorial"]
The running result of non-blocking I/O requires a callback function to receive Yes, this way of using callback functions is asynchronous programming!
Asynchronous Programming Case 1
function interview(callback) { setTimeout(() => { callback("success"); }, 1000); } interview(function (res) { if (res === "success") { console.log("============我笑了"); } });
Callback function format specification
- ##error-first callbakNode-style callbackThe first parameter is error, and the following parameters are the result
Why the first parameter is error function interview(callback) {
setTimeout(() => {
if (Math.random() < 0.3) {
callback("success");
}
throw new Error("fail");
}, 1000);
}
try {
interview(function (res) {
if (res === "success") {
console.log("============我笑了");
}
});
} catch (error) {
console.log("fail", error);
}
Copy after login
function interview(callback) { setTimeout(() => { if (Math.random() < 0.3) { callback("success"); } throw new Error("fail"); }, 1000); } try { interview(function (res) { if (res === "success") { console.log("============我笑了"); } }); } catch (error) { console.log("fail", error); }
try catch cannot capture the error thrown by
throw new Error('fail')! , but thrown to the JS global! In Node.js, global errors are very serious things and can cause the program to crash!
try catch that cannot capture the
throw in setTimeout? This has something to do with
call stack and event loop!
Each event loop is a brand new call stack! setTimeout and interview are two different event loops!
But you can solve this problem by throwing an error in the parameters in the callback function
function interview(callback) { setTimeout(() => { if (Math.random() < 0.3) { callback(null, "success"); } else { callback(new Error("fail")); } }, 1000); } interview(function (error) { if (error) { return console.log("============我哭了"); } console.log("============我笑了"); });
Node.js stipulates that the first parameter is erro, and the second parameter is the result! If the first parameter is not empty, there is an error in the asynchronous call!
Problems with asynchronous process control
Callback hell
The situation of multiple asynchronous tasks serially, as follows Let's simulate N rounds of interviews.function interview(callback) { setTimeout(() => { if (Math.random() < 0.6) { callback(null, "success"); } else { callback(new Error("fail")); } }, 1000); } interview(function (error) { if (error) { return console.log("======第一轮面试======我哭了"); } interview(function (error) { if (error) { return console.log("====第二轮面试========我哭了"); } interview(function (error) { if (error) { return console.log("====第三轮面试========我哭了"); } console.log("三轮面试都成功了!啊哈哈哈!"); }); }); });
a
Concurrent situation of multiple asynchronous tasksfunction interviewCompay() { let count = 0; interview(function (error) { if (error) { return console.log("====第一家公司面试========我哭了"); } count++; }); interview(function (error) { if (error) { return console.log("====第二家公司面试========我哭了"); } count++; if (count === 2) { return console.log("两家公司面试都成功了!我笑了"); } }); } interviewCompay();
Solving the control problem of asynchronous processes
- promise
- async await
Programming video! !
The above is the detailed content of An in-depth analysis of callback in Node.js asynchronous programming. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to implement asynchronous programming with C++ functions?

Asynchronous Programming of JavaScript Functions: Essential Tips for Handling Complex Tasks

Robot ETF (562500) may usher in a good layout opportunity because it has pulled back for 3 consecutive days!

In-depth understanding of the new features of PHP8: How to use asynchronous programming and code efficiently?

How does the golang framework handle concurrency and asynchronous programming?

Common problems and solutions in asynchronous programming in Java framework

What are the advantages and disadvantages of asynchronous programming in PHP?

Do PHP functions support asynchronous programming? If so, how to use it?
