关于在Web开发中使用Nodejs的几个问题。
1)对于并发性问题,它考虑语法。在以下几个方面是否有区别:
setInterval(function() {
console.log('Task A');
}, 10);和
function setInterval() {
console.log('Task A');
}, 10);另外,我有点搞不懂'10‘在这个方法的末尾意味着什么,我猜这个方法完成所需的时间是多少?
2)回调--回调在Node中是否只是测试代码的另一个名称?
3)我是否可以在节点(CLI)中使用一个方法来查看模块中的所有方法?
例:
var fs = require('fs');显然,文件系统模块中有大量的方法,但是像Ruby语言一样,在CLI中使用PRY,您可以键入‘fs.method’,这将显示所有的方法。然后使用“cat”,您可以看到每个方法的内容。对Node(CLI)是这样的吗?
谢谢你所有的建议/答案!
干杯,G
发布于 2015-06-23 20:50:24
在第二个例子中,您声明了一个名为setInterval的函数。好像有语法错误..。
setInterval是一个将两个对象作为参数的函数。就这样。第一个参数应该是一个函数,第二个参数应该是以毫秒为单位的间隔时间。setInterval所做的就是按照第二个参数中指定的每x毫秒运行第一个参数(回调)中传入的函数。
我对您的建议是阅读有关node.js事件循环和异步编程的内容。
发布于 2015-06-24 02:03:37
首先,您询问了Javascript的一些非常基本的方面,所以我建议您通过一些基本的Javascript培训来工作,因为如果您还没有对Javascript的基本知识有一个核心的理解,就很难学习node.js。特别是,回调在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 of调用一次(大约)。
创建自己的功能
function setInterval() {
console.log('Task A');
}, 10);此代码块是Javascript语法错误,无法工作。看起来,您正在尝试定义自己的函数setInterval(),但这不是声明函数的正确语法。
您可以使其合法语法如下:
function setInterval() {
console.log('Task A');
}然后,你会这样称呼它:
setInterval();这与前面的示例无关。这只会创建一个函数,每次调用它都会运行一次。如果您实际上给它取了与全局函数setInterval()相同的名称,那么您的本地定义将在声明的范围内替换它。
你的其他问题
另外,我有点搞不懂'10‘在这个方法的末尾意味着什么,我猜这个方法完成所需的时间是多少?
第一个例子中的10是间隔计时器的毫秒数。第二个示例中的10不属于那里--它是Javascript语法错误的一部分。
回调--从技术上讲,回调只是Node中测试代码的另一个名称吗?
不是的。回调是指函数接受函数引用的参数(例如函数的名称或匿名函数)。当您将回调传递给此函数时,您可以预期该函数将在将来的某个时候调用该回调一次或多次。它的确切调用时间或调用次数完全取决于函数的操作和编写方式。“回调”一词来自于这样一种观念,即这个函数在将来的某个时候会被“回调”。
我是否可以在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);
}
}https://stackoverflow.com/questions/31013028
复制相似问题