关于在Web开发中使用Nodej的几个问题。
1)对于我的并发问题,它会考虑语法。是否有区别:
setInterval(function() {
console.log('Task A');
}, 10);
和
function setInterval() {
console.log('Task A');
}, 10);
另外,我对这个方法结束时“10”意味着什么感到困惑,我的猜测是方法完成所需的时间?
2)回调 - 回调在技术上是否是Node中用于测试代码的另一个名称?
3)我是否可以在Node(CLI)中使用一种方法来查看模块中的所有方法?
EX:
var fs = require('fs');
显然文件系统模块中有很多方法,但是像Ruby这样的语言,在CLI中使用PRY,你可以输入'fs.methods',它将显示所有方法。然后使用'cat',您可以看到每个单独方法的内容。 Node(CLI)这样的东西?
感谢所有建议/答案!
干杯, ģ
答案 0 :(得分:1)
1。 在第一个中,传入一个匿名函数,该函数将在间隔时间调用。您在这里使用node.js API setInterval。
在第二个示例中,您声明了一个名为setInterval的函数。看起来像语法错误......
setInterval是一个将2个对象作为参数的函数。就是这样。第一个参数应该是一个函数,第二个参数应该是以毫秒为单位的间隔时间。 setInterval所做的就是在第二个参数中指定的每x毫秒运行第一个参数(回调)中传入的函数。
2。 不。回调是可以传递给其他功能的功能,以便它们可以被回叫"稍后在代码中。回调在node.js应用程序中很普遍,并且与它基于异步事件的体系结构紧密相关。它是node.js中最常见的模式之一。
3。 只需查看他们网站上的node.js api文档。
我建议您阅读有关node.js事件循环和异步编程的内容。
答案 1 :(得分:0)
首先,你要问的是Javascript的一些非常基本的方面,所以我建议你通过一些基本的Javascript培训工作,因为如果你还没有核心理解,那么很难学习node.js Javascript的基础知识。特别是回调是很多nodejs编码的组成部分。
这两者之间有区别吗?
是的,两者完全不同。一个使用内置的定时器功能,另一个尝试声明它自己的与定时器无关的功能。
让我解释一下你的两个例子:
setInterval
函数setInterval(function() {
console.log('Task A');
}, 10);
Nodejs有一个名为setInterval
的内置计时器功能。你可以在这里找到它的文档。
你传递这个函数两个参数。第一个参数是函数引用,第二个参数是以毫秒为单位的时间量。 nodejs计时器基础结构将每隔N毫秒调用您传递的函数。
通过查看setInterval如何使用它可能会稍微容易理解:
function myFunction() {
console.log('Task A');
}
setInterval(myFunction, 10);
这与第一个示例的输出相同,但我认为它更清楚地表明setInterval()
是一个内置函数,它接受两个参数,一个函数和一个数字。
在您的示例中,您将传递一个只执行console.log('Task A');
的匿名函数而不是命名函数,并且每10毫秒(大约)调用该函数。
function setInterval() {
console.log('Task A');
}, 10);
此代码块是Javascript语法错误,无法使用。看起来您正在尝试定义自己的函数setInterval()
,但这不是声明函数的正确语法。
您可以将其设为合法语法:
function setInterval() {
console.log('Task A');
}
然后,你会这样称呼它:
setInterval();
这与前面的例子无关。这只会创建一个每次调用它时运行一次的函数。如果您实际上给它的名称与全局函数setInterval()
相同,那么您的本地定义将在声明的范围内替换它。
另外,我有点困惑“10”意味着什么 方法,我的猜测是该方法完成所需的时间?
第一个示例中的10
是间隔计时器的毫秒数。第二个示例中的10
不属于那里 - 它是Javascript语法错误的一部分。
回调 - 回调在技术上是Node的另一个名称 测试代码?
没有。回调是函数接受作为函数引用的参数(例如函数名或匿名函数)。当您将回调传递给此函数时,您可以预期该函数将来会在某个时间调用一次或多次回调。何时调用它或调用它的次数完全取决于函数的作用以及函数的编写方式。术语“回调”来自于这个功能将在未来的某个时间被“回调”的概念。
我是否可以在节点(CLI)中使用方法来查看所有方法 在模块中?
我不知道命令行界面中的某个特定功能会为您提供模块的方法,但您可以自己迭代它们或在调试器中查看它们。
在节点中加载模块时,例如:
var fs = require('fs');
从require()
函数返回的对象是Javascript对象。该模块的所有方法都是该对象的属性。您可以在调试器中或使用console.log(fs)
或通过编写代码来检查该对象以迭代该对象的属性。
var fs = require('fs');
for (var prop in fs) {
if (fs.hasOwnProperty(prop)) {
console.log(prop);
}
}