首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLI NodeJS (并发、回调、.methods)

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

Stack Overflow用户
提问于 2015-06-23 20:37:19
回答 2查看 158关注 0票数 0

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

1)对于并发性问题,它考虑语法。在以下几个方面是否有区别:

代码语言:javascript
复制
setInterval(function() {
    console.log('Task A');
}, 10);

代码语言:javascript
复制
function setInterval() {
    console.log('Task A');
}, 10);

另外,我有点搞不懂'10‘在这个方法的末尾意味着什么,我猜这个方法完成所需的时间是多少?

2)回调--回调在Node中是否只是测试代码的另一个名称?

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

例:

代码语言:javascript
复制
var fs = require('fs');

显然,文件系统模块中有大量的方法,但是像Ruby语言一样,在CLI中使用PRY,您可以键入‘fs.method’,这将显示所有的方法。然后使用“cat”,您可以看到每个方法的内容。对Node(CLI)是这样的吗?

谢谢你所有的建议/答案!

干杯,G

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-23 20:50:24

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

在第二个例子中,您声明了一个名为setInterval的函数。好像有语法错误..。

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

  1. 不是的。回调是可以传递给其他函数的函数,这样它们就可以在代码的后面被“回调”。回调在node.js应用程序中非常普遍,并且与其基于异步事件的体系结构密切相关。它是node.js中最常见的模式之一。
  2. 只需查看其网站上的node.js api文档即可。

我对您的建议是阅读有关node.js事件循环和异步编程的内容。

票数 1
EN

Stack Overflow用户

发布于 2015-06-24 02:03:37

首先,您询问了Javascript的一些非常基本的方面,所以我建议您通过一些基本的Javascript培训来工作,因为如果您还没有对Javascript的基本知识有一个核心的理解,就很难学习node.js。特别是,回调在nodejs编码中是不可或缺的。

这两者有什么区别吗?

是的,两者是完全不同的。一个使用内置计时器函数,另一个尝试声明与计时器无关的自己的函数。

让我解释一下你的两个例子:

内置setInterval函数

代码语言:javascript
复制
setInterval(function() {
    console.log('Task A');
}, 10);

Nodejs有一个名为setInterval的内置计时器函数。你可以在这里找到医生。

传递这个函数两个参数。第一个参数是函数引用,第二个参数是以毫秒为单位的时间。nodejs计时器基础设施将每N毫秒调用传递给它的函数。

如果看到setInterval像这样使用,那么了解它是如何工作的可能要容易一些:

代码语言:javascript
复制
function myFunction() {
    console.log('Task A');
}

setInterval(myFunction, 10);

这与第一个示例具有相同的输出,但我认为它更清楚地显示了setInterval()是一个内置函数,它包含两个参数,一个函数和一个数字。

在您的示例中,您传递的不是命名函数,而是传递一个只执行console.log('Task A');的匿名函数,该函数将每10 of调用一次(大约)。

创建自己的功能

代码语言:javascript
复制
 function setInterval() {
     console.log('Task A');
 }, 10);

此代码块是Javascript语法错误,无法工作。看起来,您正在尝试定义自己的函数setInterval(),但这不是声明函数的正确语法。

您可以使其合法语法如下:

代码语言:javascript
复制
function setInterval() {
    console.log('Task A');
}

然后,你会这样称呼它:

代码语言:javascript
复制
 setInterval();

这与前面的示例无关。这只会创建一个函数,每次调用它都会运行一次。如果您实际上给它取了与全局函数setInterval()相同的名称,那么您的本地定义将在声明的范围内替换它。

你的其他问题

另外,我有点搞不懂'10‘在这个方法的末尾意味着什么,我猜这个方法完成所需的时间是多少?

第一个例子中的10是间隔计时器的毫秒数。第二个示例中的10不属于那里--它是Javascript语法错误的一部分。

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

不是的。回调是指函数接受函数引用的参数(例如函数的名称或匿名函数)。当您将回调传递给此函数时,您可以预期该函数将在将来的某个时候调用该回调一次或多次。它的确切调用时间或调用次数完全取决于函数的操作和编写方式。“回调”一词来自于这样一种观念,即这个函数在将来的某个时候会被“回调”。

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

我不知道命令行接口中会给出模块的方法,但是您可以自己迭代它们,或者在调试器中查看它们。

当您在节点中加载模块时,所使用的内容如下:

代码语言:javascript
复制
var fs = require('fs');

require()函数返回的对象是Javascript对象。该模块的所有方法都是该对象的属性。您可以在调试器中或使用console.log(fs)检查该对象,或者编写代码来迭代该对象的属性。

代码语言:javascript
复制
var fs = require('fs');
for (var prop in fs) {
    if (fs.hasOwnProperty(prop)) {
        console.log(prop);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31013028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档