使用node.js和async.js:系列执行顺序错误?

科斯马斯·普洛里亚诺斯(Kosmas Poulianos)

我正在为节点应用程序使用express和async.js。我的app.js中有以下代码:

var resultObject = {};

app.get('/average', function(req, res) {
  async.series([
    function(callback) {
  //This does some complex computations and updates the resultObject
      routes.avg(req.query.url, resultObject);
      console.log('1');
      callback();
    }
    ,
    function(callback) { 
      res.send(resultObject);
      console.log('2');
      callback();
    }
  ]);
});

问题在于,res.send(...)在第一个函数中的复杂计算完成之前就触发了。因此,发送的对象为空。我的代码中有一些错误,还是我没有正确使用async.js?

吉姆·鲁宾斯坦

根据您的评论,问题在于您的routes.avg方法是异步的。这意味着该方法将被执行,但不会阻止程序继续执行,这意味着您的系列中的第二个闭包几乎在第一个闭包之后立即被调用。

问题不在于async.series调用中的闭包被无序调用,而是没有什么可以阻止您callback的闭包1在routes.avg完成之前被执行

要解决此问题,您可以将您callbackroutes.avg调用传递给,然后编辑该routes.avg方法,以便在完成所有计算后调用回调闭包。这样,您的系列中的第二个闭包将在callbackroutes.avg方法调用传递给闭包1的情况下执行

如果您无权更改该routes.avg方法,则必须在调用callback从异步传递给闭包1参数之前,找到另一种方法来检测它何时完成

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用async.forEach和异步操作的Node.js

来自分类Dev

在Node.js中将Async与Waterfall和Recursion结合使用

来自分类Dev

使用async.js系列中的GET方法和CouchDB操作进行循环不会执行多次

来自分类Dev

如何在 Node.js 中使用“async/await”和“promises”进行同步执行?

来自分类Dev

使用嵌套的async.forEachSeries和async.waterfall控制Lambda Node.js代码的排序

来自分类Dev

Node.js,Mongo async.js插入和查询

来自分类Dev

JS - 承诺以错误的顺序执行

来自分类Dev

在Node.js中使用async-await和promises时无法按预期顺序获得结果

来自分类Dev

Node js流中的执行顺序

来自分类Dev

在Node.js中执行顺序操作

来自分类Dev

在Node.js中执行顺序操作

来自分类Dev

Node.js 执行顺序查询

来自分类Dev

如何确定 Node.js 的执行顺序?

来自分类Dev

使用 Node js Await/Async 函数

来自分类Dev

使用Node.js和async.queue将大型CSV插入MongoDB

来自分类Dev

使用Node.js,Async,Waterfall,Each和MySQL同步控制流

来自分类Dev

无法使用 mongoose、node.js、express 和 async 函数更新文档数据

来自分类Dev

安装和使用Node JS

来自分类Dev

安装和使用Node JS

来自分类Dev

如何在Node.js中执行一系列同步和异步功能

来自分类Dev

使用Node JS和MongoDB时出现多个连接错误

来自分类Dev

错误:使用node.js和imagemagick编写EPIPE

来自分类Dev

使用node.js和ldapjs的LDAP绑定错误

来自分类Dev

使用node.js和mongoose的mapReduce

来自分类Dev

使用Node JS和MongoDB过滤查询

来自分类Dev

Netbeans和Node.js使用

来自分类Dev

使用 `replace` 和 Node.js 函数

来自分类Dev

NODE.JS 按特定顺序执行代码

来自分类Dev

Node.js googlemaps集群执行错误

Related 相关文章

热门标签

归档