ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 为什么瀑布这么慢?

2019-06-30 22:23:49  阅读:164  来源: 互联网

标签:javascript node-js async-js


我正在为Node.js使用异步模块(参见https://github.com/caolan/async),我的问题是……为什么瀑布这么慢?

执行这段代码大约需要4秒钟……

App.post("/form", function(request, response) {

Async.waterfall([

  function(callback) {

    console.log("1.");
    callback(null, "some data");

  },

  function(data, callback) {

    console.log("2.");            
    callback(null, "some data");

  },

  function(data, callback) {

    console.log("3.");
    callback(null, "some data");              

  }

], function(error, document) {

  console.log("4.");            
  console.log("Done.");

  response.send(); // Takes 4 seconds

});

}

产量

1.
2.
// After 4 seconds
3.
4.
Done.

谢谢你的答复!

解决方法:

这只是另一个Node.js Bug.

在挂起的http.ServerResponse期间,在另一个process.nextTick中使用process.nextTick被破坏.

var http = require('http');
http.createServer(function(req, res) {
    var now = new Date();
    process.nextTick(function() {
        process.nextTick(function() {
            console.log(new Date() - now);
            res.writeHead({});
            res.end('foooooo');
        });
    });
}).listen(3000);

这需要一个永恒,async.js从其他回调中调用回调,这些回调是通过process.nextTick调用的,然后导致上面的错误被触发.

快速修复:在async.js第63行修改async.nextTick只使用setTimeout.

错误:我已经提交了issue.

标签:javascript,node-js,async-js
来源: https://codeday.me/bug/20190630/1340795.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有