js数据库信息交互 js调用数据库数据( 二 )


window.addEventListener(‘load’, function() {
// do some work
});
window.addEventListener(‘click’, function() {
// do the same work here
});
上面代码的问题在于我们需要维持做相同工作的两个函数 。然后,如果知道函数是第一类对象,我们可声明单一的命名函数,并根据需要传递引用 。
function doWork() {
// do some work
}
window.addEventListener(‘load’, doWork);
window.addEventListener(‘click’, doWork);
你可以看到,函数作为第一类对象是简单而强大的JavaScript功能 。
函数提供闭合
闭合的概念可能有点难理解,但它对异步/事件编程来说至关重要 。简单来说,闭合是指在其封闭范围定义的变量的函数 。
很多语言允许开发人员在函数中嵌套函数,子函数可引用父函数范围中声明的变量 。使用其他语言的开发人员可能永远不会想到,如果在父函数完成执行后运行时调用子函数会发生什么?这根本不可能,但JavaScript并非如此!
请记住,JavaScript中的函数是第一类对象,所以与分配给变量的任何其他值一样,它们可通过传递来逃避其父函数的限制 。当发生这种情况时,原始封闭范围(词汇范围)内对变量的引用仍将存在 。那么,在以后调用子函数时应该怎么办?
闭合确保子函数能够访问这些变量,只要运行时可能需要调用子函数 。这些变量不会像平常那样作为垃圾回收 。
下面是示例:
你可将此代码复制并粘贴到具有.html扩展名的文件中,并在浏览器中打开 。你会看到一个按钮写着“点击我”,当窗口加载时,onLoad函数会将onClick函数注册到按钮的click事件 。
请注意,onClick不会在onLoad内调用 。相反,应用被传递到API,可在未来调用该函数 。因为onClick是指onLoad函数中声明的button变量,闭合可确保onClick在未来调用时可访问button 。
现在我们已经探讨了JavaScript中异步编程相关的一些核心概念,下面让我们将注意力转移到Node.js中涉及的异步模式 。
常见异步模式
目前,通过Node.js编写异步代码最常见(通用)模式是回调、异步模块和promise 。Node.js 7.6版本升级到8版本,其中引入了被称为异步函数的异步处理新方法 。
异步函数允许Javascript代码异步编写,且可异步执行 。最重要的是,异步结构可按照你期望的方式运作 。对于JavaScript来说,异步函数是重要变革,但promise以及异步处理仍然很重要 。