CLI NodeJS(并发、回调、.methods)

CLI NodeJS (Concurrency, Callbacks, .methods)

本文关键字:回调 methods 并发 NodeJS CLI      更新时间:2023-09-26

关于在Web开发中使用Nodejs的几个问题。

1) 对于我的并发性问题,它涉及语法。之间有区别吗

setInterval(function() {
    console.log('Task A');
}, 10);

function setInterval() {
    console.log('Task A');
}, 10);

此外,我有点困惑方法末尾的"10"是什么意思,我猜是完成方法所需的时间?

2) 回调-从技术上讲,回调只是Node中测试代码的另一个名称吗?

3) 我是否可以在Node(CLI)中使用一种方法来查看模块中的所有方法?

例如:

var fs = require('fs');

显然,文件系统模块中有很多方法,但与Ruby语言一样,在CLI中使用PRY,您可以键入"fs.methods",它将显示所有方法。然后使用"cat",您可以看到每个单独方法的内容。Node(CLI)有类似的情况吗?

感谢所有的建议/答案!

干杯,G

1。在第一个步骤中,您传入一个匿名函数,该函数将在间隔时调用。这里使用的是node.js API setInterval。

在第二个示例中,您正在声明一个名为setInterval的函数。看起来有语法错误。。。

setInterval是一个将中的2个对象作为参数的函数。就是这样。第一个参数应该是一个函数,第二个参数应该为一个以毫秒为单位的间隔时间。setInterval所做的只是按照第二个参数中的指定,每隔x毫秒运行第一个参数中传递的函数(回调)。

2。不可以。回调是可以传递给其他函数的函数,这样它们就可以在稍后的代码中"回调"。回调在node.js应用程序中非常普遍,并且与基于异步事件的体系结构密切相关。这是node.js.中最常见的模式之一

3。只需查看他们网站上的node.js api文档即可。

我建议您阅读node.js事件循环和异步编程。

首先,您正在询问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');的匿名函数,该函数将每10ms(大约)调用一次。

创建自己的函数

 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);
    }
}