我一直在阅读nodebeginner, 并且遇到了以下两段代码。
第一个:
var result = database.query("SELECT * FROM hugetable");
console.log("Hello World");
第二个:
database.query("SELECT * FROM hugetable", function(rows) {
var result = rows;
});
console.log("Hello World");
我得到了他们应该做的事情,他们查询数据库以检索查询的答案。然后console.log('Hello world')
。
第一个应该是同步代码。第二个是异步代码。
这两件作品之间的区别对我来说很模糊。输出是什么?
搜寻异步编程也没有帮助我。
同步功能正在阻塞,而异步功能没有。在同步函数中,语句在下一条语句运行之前完成。在这种情况下,如果按照其中一条语句花费的时间很长,则会按语句的顺序准确地评估程序,并暂停执行程序。
异步函数通常接受回调作为参数,并且在调用异步函数后立即在下一行继续执行。仅当异步操作完成并且调用堆栈为空时才调用回调。繁重的操作(例如从Web服务器加载数据或查询数据库)应异步进行,以便主线程可以继续执行其他操作,而不是阻塞直到完成该长的操作(对于浏览器,UI会冻结) 。
原始发布于Github:链接