- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个大量使用 async.js 模块的大型 node.js 应用程序。
我有很多这样的代码:
async.series([
function(callback){
sql.update(query, callback);
},
function(callback){
if (something){
sql.update(query2, callback);
}
else{
callback(null);
}
}
]);
最大的问题是 else 语句中的同步回调。我前段时间读到您不应该使用 async.js 这样做,因为它可能会导致意外结果,但我不确定最好的选择是什么。我读到我应该在某些地方使用 process.nextTick,但现在我读到我们不应该使用它,它应该是 setImmediate。
有人能指出我正确的方向吗?谢谢!
最佳答案
我终于找到了我记得不久前读过的引用资料。
在这个页面上: http://caolanmcmahon.com/posts/nodejs_style_and_structure/
他在第 3 条规则中讨论了一般情况,并且与我的问题更直接相关,以回应页面上的第一条评论。
即使这不是我随机错误的原因,我也想根据作者的意图使用该模块,这是问题的重点。
在这篇文章中,他提到了使用 process.nextTick,但我真的认为 node 在这种情况下正试图摆脱这种情况,我在一个月前的异步问题线程中发现了一个响应,上面写着:
“你需要确保你的函数是异步运行的——如果你不知道它是否是异步的,你可以使用 setImmediate 强制它异步”
所以,这就是我要回答的问题。我将在 setImmediate 中包装所有同步回调。
关于node.js async.js nextTick vs setImmediate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514683/
当在代码中更新了数据,并希望等到对应的Dom更新之后,再执行一些逻辑。这时,我们就会用到$nextTick ?
我是 Vue js 新手,我试图理解方法中使用 nextTick 的逻辑。所以我有两个这样的组件: IsTuruIslem.vue ... ... .
如果我有这样的代码: class SomeClass constructor: -> @someAttr = false someFunction: -> process.ne
我正在尝试测试我的应用程序在连续两次 tick 上发生的情况。这是我目前所拥有的(测试在 karma devtools 中失败,但在命令行中失败): import { mount } from 'av
我偶然发现了一个函数( here on SO ),它可以写入文件,但确保不会覆盖文件: function writeFile(i){ var i = i || 0; var fileN
我有一个 我有一个已安装的方法,可以在其中初始化 map 。 mounted(){ this.map = L.map(this.mapId, { preferCanvas: true }).setV
尝试递归调用同步函数来解析数组的元素;一旦到达数组的最后一个元素,就会调用回调。但是,当传递给 process.nextTick 时,回调被认为是未定义的,因为在与回调相同的范围内声明的另一个变量会打
我有一个 50k 条目的列表,我正在输入我的数据库。 var tickets = [new Ticket(), new Ticket(), ...]; // 50k of them tickets.f
下面的程序会在 NodeJS 中挂起,有人知道为什么吗? ended = false;events = require('events');eventEmitter = new events.Even
Node.js 版本 0.10 今天发布,并引入了 setImmediate。 API changes文档建议在执行递归 nextTick 调用时使用它。 来自什么MDN says它看起来与proce
我应该多久或何时使用 process.nextTick ? 我明白它的目的(主要是因为 this 和 this )。 根据经验,当我必须调用回调时,我总是使用它。这是一般方法还是还有其他方法? 此外,
更新:事实证明这是一个非常愚蠢的问题。我只是没有注意到引用的示例中的一些简单的事情。 我一直在查看有关滴答声和事件循环的信息,大部分内容都很清楚,但 the nextTick documentatio
下面是“practise01.js”文件中的代码, function fn(name){ return f; function f(){ var n = name;
Node.js 0.10 版今天发布,引入了setImmediate。 API changes文档建议在进行递归 nextTick 调用时使用它。 来自MDN says它似乎与 process.nex
我读过 nextTick 允许在下一个操作中执行代码。但这在我的代码中不起作用,有人可以帮助我吗?请纠正我。谢谢。 .vue ..... methods:{ getUserInfo(){
使用 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/EventLoop 中的视觉表示: setImmediate() 和
我从人们那里得到的印象是...除非与 process.nextTick 一起使用,否则所有 JavaScript 函数都是同步的。什么时候使用它最好? 我想确保我不会在不需要它的地方过度使用它。在这一
无论好坏,我们 stub process.nextTick 以同步调用它的第一个参数(回调)。看代码: global.test_clock = sinon.useFakeTimers(); sinon
我正在尝试测试此 site 中找到的 Yahoo API。但是,我可以获得“请求 token ”,但我似乎不知道如何继续,因为我的应用程序抛出 process.nextTick 错误 此外,如果可能的
我遇到了这个express.js路线,它是 small example in its official repo 的一部分,演示如何处理错误,看看: app.get('/next', function
我是一名优秀的程序员,十分优秀!