文章の目录
一、同步API
只有当前API执行完成后,才能继续执行下一个API
console.log("before");
console.log("after");
二、异步API
当前API的执行不会阻塞后续代码的执行
console.log("before");
setTimeout(() => {
console.log("last");
}, 2000);
console.log("after");
三、同步API,异步API的区别
1、获取返回值
同步API可以从返回值中拿到API执行的结果,但是异步API是不可以的。
// 同步
function sum(n1, n2) {
return n1 + n2;
}
const result = sum(10, 20);
// 异步
function getMsg() {
setTimeout(function () {
return {
msg: "Hello Node.js" };
}, 2000);
}
const msg = getMsg();
2、代码执行顺序
同步API从上到下依次执行,前面代码会阻塞后面的代码的执行
for (var i = 0; i < 100000; i++) {
console.log(i);
}
console.log("for循环后面的代码");
异步API不会等待API执行完成后再向下执行代码
console.log("代码开始执行");
setTimeout(() => {
console.log("2秒后执行的代码");
}, 2000);
setTimeout(() => {
console.log('"0秒"后执行的代码');
}, 0);
console.log("代码结束执行");
四、回调函数
自己定义的函数让别人去调用
// getData函数定义
function getData(callback) {
}
// getData函数调用
getData(() => {
});
五、使用回调函数获取异步API执行结果
function getMsg(callback) {
setTimeout(function () {
callback({
msg: "Hello Node.js" });
}, 2000);
}
getMsg(function (msg) {
console.log(msg);
});
六、代码执行顺序分析
console.log("代码开始执行");
setTimeout(() => {
console.log("2秒后执行的代码");
}, 2000);
setTimeout(() => {
console.log('"0秒"后执行的代码');
}, 0);
console.log("代码结束执行");
七、Node.js中的异步API
fs.readFile("./demo.txt", (err, result) => {
});
var server = http.createServer();
server.on("request", (req, res) => {
});
如果异步API后面代码的执行依赖当前异步API的执行结果,但实际上后续代码在执行的时候异步API还没有返回结果,这个问题要怎么解决呢?
fs.readFile("./demo.txt", (err, result) => {
});
console.log("文件读取结果");
需求:依次读取A文件、B文件、C文件
写在最后
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!