我已经process.nextTick
在一些地方看到过使用它,还不能完全知道它的用途。
process.nextTick
Node.js 的主要/正确用例是什么?文档基本上说这是一种更优化的方法setTimeout
,但这并没有太大帮助。
我曾经做过很多ActionScript,所以“等到下一帧”执行代码的想法在某种程度上是有意义的-
如果正在运行动画,则可以让它每帧更新一次,而不是每毫秒更新一次。当您要协调设置一系列变量时,这也很有意义-
在第1帧中更改变量,并在第2帧中应用更改。Flex在其组件生命周期中实现了类似的操作。
我的问题是,我应该在服务器端JavaScript中使用它吗?我看不到任何需要这种经过微调的性能/流控制的地方。只是寻找正确方向的一点。
process.nextTick
将回调放入队列。此队列中的每个回调将在事件循环的下一个滴答的开始处执行。基本上,它用作清除调用堆栈的一种方法。当文档说像时setTimeout
,意味着说像setTimeout(function() { ... }, 1)
在浏览器中使用。它具有相同的用例。
一个示例用例是,为需要绑定事件的某些对象创建一个构造函数。但是,您无法立即开始发出事件,因为实例化它的代码还没有时间绑定到事件。您的构造函数调用在调用堆栈中位于它们之上,并且如果您继续执行同步操作,它将保持这种状态。在这种情况下,您可以process.nextTick
在继续进行任何操作之前使用“
a” 。它保证使用您的构造函数的人将有足够的时间绑定事件。
例:
var MyConstructor = function() {
...
process.nextTick(function() {
self._continue();
});
};
MyConstructor.prototype.__proto__ = EventEmitter.prototype;
MyConstructor.prototype._continue = function() {
// without the process.nextTick
// these events would be emitted immediately
// with no listeners. they would be lost.
this.emit('data', 'hello');
this.emit('data', 'world');
this.emit('end');
};
使用此构造函数的示例中间件
function(req, res, next) {
var c = new MyConstructor(...);
c.on('data', function(data) {
console.log(data);
});
c.on('end', next);
}
问题内容: 我正在Heroku上编写一个node.js应用程序,并使用pg模块。我无法弄清楚为查询数据库所需的每个请求获取客户端对象的“正确”方法。 该文档使用如下代码: 但是,您肯定不需要在使用数据库的每个函数中调用对吗?我看过其他执行此操作的代码: 我倾向于第二种选择,因为我相信Heroku的免费数据库实例无论如何都仅限于一个连接,但是以这种方式进行操作是否有任何弊端?每次使用之前,是否需要检
问题内容: 我在我的redux存储中存储了一个引用,并使用mapStateToProps公开了需要访问它的组件的引用。 存储的ref如下所示: 此引用的正确propType是什么? 问题答案: 如果您想要输入仅需要本机DOM元素(例如a或an)的引用,则正确的定义如下: 回答原始帖子中描述的特定问题 在OP问题的示例中,不是需要声明ref prop类型,而是由ref指向的东西,它将使用redux从
在Node.jsV8.9中,我有以下函数来处理用户注册: 正如您所看到的,我正在使用异步,并等待在用户未成功创建时进行处理。但是,当创建失败时,我的catch()从不执行。为什么?使用Async/Await是否有不同的方法来处理承诺拒绝?有人建议使用thow new Error(),但我不想抛出一个错误,我只想向客户机发回一个消息。 更多背景信息:应用程序是用Express.js制作的,并使用Se
问题内容: 我正在为MongoDB使用Node.JS驱动程序,我想执行一个同步查询,例如: 问题是,db.open是一个异步调用(它不会阻塞),因此getAThing返回“ undefined”,我希望它返回查询结果。我确定我可以使用某种阻止机制,但我想知道执行此类操作的正确方法。 问题答案: 没有办法使这种同步变得不可怕。正确的方法是接受回调函数作为参数,然后在可用时调用该函数。 节点7.6+更
团队, 使用continueAsNew的确切用例是什么? 由于我们支持Cron附表进行定期活动,我不知道使用它的场景。 我们这样做是为了提供向后兼容性吗
问题内容: 我是node.js的新手,并表示自己,并且已经尝试了一段时间。现在,我对与解析请求正文有关的快速框架的设计感到困惑。来自快递的官方指南: 设置完所有中间件之后,然后添加要处理的路由: 这种方法的问题在于,在检查路由有效性之前,将首先解析所有请求正文。解析无效请求的主体似乎效率很低。甚至更多,如果我们启用上传处理: 任何客户端都可以通过上传任何文件来轰炸服务器(通过向任何路由/路径发送请