Node.js在执行功能之前需要等待循环完成

耶鲁·纽曼(Yale Newman)

好的。所以我对Node来说是非常陌生的。我的想法现在正在回调地狱中旋转。我已经阅读了许多类似的问题,但似乎无法使其正常运行。

从本质上讲,我正在通过服务器日志正则表达式解析我将用于运行某些sql查询的特定字符串。我已经将其用于不需要循环的较小规模的工作。

我需要等待所有ppsid都通过_cssPPSID运行,这会生成一个字典对象和我的查询过滤器,然后在查询本身中使用该过滤器运行查询,然后与该字典进行匹配以将结果与已解析的数据配对从服务器日志中。

截至目前,此代码已运行,但在第一次迭代后停止。我想我缺少回调或简单的东西,以便脚本可以回到循环中。

var ppsDict = new Object();
var ppsList = new Array();

var getURL = function(stdout) {
    console.log('Creating ppsid url key value pairs');
    var url_reg = /http\S+/g;
    var ppsid_reg = /PPS_ID\=[0-9]+/g;
    var ppsid = stdout.toString().match(ppsid_reg);
    var url = stdout.toString().match(url_reg);
    ppsDict[ppsid[0]] = url[0];
    ppsList.push(ppsid[0]);
    console.log(ppsDict);
  };


var getPPSID = function(stdout, prodServer, searchResultProcessed) {
    console.log("Collecting PPSID's");
    var ppsid_reg = /PPS_ID\=[0-9]+/g;
    var selector_reg = /selector\s\S+/g;
    var ppsid = stdout.toString().match(ppsid_reg);
    var selector = stdout.toString().match(selector_reg);
    async.eachSeries(ppsid, function (ppsSelector, next) {
      var urlQ = new urlQuery(prodServer, searchResultProcessed,  ppsSelector);
      _cssPPSID(urlQ, function(err, result) {
         if(err) {
          console.log(err);
        }
        next();
      }) 
    }, function (err) {
        console.log('iterating done');
        //queryProd(ppsList,ppsDict);
    });
}


function urlQuery(prodServer, searchResultProcessed, ppsSelector) {
  this.cssPPSID = "ssh " + prodServer + " 'sudo cat  /mint/logs/topologies/'" + searchResultProcessed + " | grep " + ppsSelector  + " | grep \"Downloading\"";
}

var _cssPPSID = (urlQ) => {
  child_process.exec(urlQ.cssPPSID, ["-m"], (err, stdout, stderr) => {
    if (stdout === 0) {
      console.log('PPS_ID and CSS error combination not found');
      return;
    } else if (err) {
     console.error(err, stderr);
      return;
    }
    getURL(stdout);
  });
};
埃萨·托沃拉(Esa Toivola)

async.eachSeries将无法使用,因为函数_cssPPSID不会将回调作为第二个参数,因此next()永远不会调用。

尝试像这样重写它:

var _cssPPSID = (urlQ, callback) => { 
  child_process.exec(urlQ.cssPPSID, ["-m"], (err, stdout, stderr) => {
    if (err) {
      return callback(err);
    }        
    if (stdout === 0) {
      return callback(new Error('PPS_ID and CSS error combination not found');
    }
    // do stuff here
    callback(null); // null indicates no error has happened
  });
};

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在继续之前需要等待循环完成执行的可能性有哪些

来自分类Dev

Node.js强制等待功能完成

来自分类Dev

等待功能完成后再执行下一步-Node JS

来自分类Dev

Node.js中的功能编程-等待功能完成

来自分类Dev

使用node.js更新Firebase-我需要等待吗?

来自分类Dev

node.js继续执行而无需等待要求完成。

来自分类Dev

Node.js等待for循环完成以mysql查询

来自分类Dev

等待循环执行并在 Node Js 中获取值

来自分类Dev

Node.JS 在启动其他命令之前等待 node-cmd run 命令完成

来自分类Dev

Javascript / Node / Express:res.json需要等待函数完成运行才能返回...但是res.json是否急躁?

来自分类Dev

如何在Node.js中继续之前等待函数完成

来自分类Dev

Node.js:节点是否总是在退出之前等待setTimeout()完成?

来自分类Dev

等待请求完成Node.js

来自分类Dev

等待操作在node.js中完成

来自分类Dev

node.js等待文件操作完成

来自分类Dev

Node js:等待 100 个请求完成

来自分类Dev

Node JS问题,并承诺在完成之前返回

来自分类Dev

Node.js,等待所有Redis查询完成,然后再继续执行

来自分类Dev

Node.js,等待所有Redis查询完成,然后再继续执行

来自分类Dev

Node js for-loop在下一次迭代之前等待异步功能?

来自分类Dev

JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

来自分类Dev

JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

来自分类Dev

异步和等待功能Node.js

来自分类Dev

Node.js在异步(可读)完成之前完成(结束)流

来自分类Dev

不要等待异步功能完成

来自分类Dev

在部署HttpClient之前,我是否需要等待异步方法完成?

来自分类Dev

在部署HttpClient之前,我是否需要等待异步方法完成?

来自分类Dev

Node js - 通过循环同步执行函数

来自分类Dev

如何在Node.js中等待子进程完成?

Related 相关文章

  1. 1

    在继续之前需要等待循环完成执行的可能性有哪些

  2. 2

    Node.js强制等待功能完成

  3. 3

    等待功能完成后再执行下一步-Node JS

  4. 4

    Node.js中的功能编程-等待功能完成

  5. 5

    使用node.js更新Firebase-我需要等待吗?

  6. 6

    node.js继续执行而无需等待要求完成。

  7. 7

    Node.js等待for循环完成以mysql查询

  8. 8

    等待循环执行并在 Node Js 中获取值

  9. 9

    Node.JS 在启动其他命令之前等待 node-cmd run 命令完成

  10. 10

    Javascript / Node / Express:res.json需要等待函数完成运行才能返回...但是res.json是否急躁?

  11. 11

    如何在Node.js中继续之前等待函数完成

  12. 12

    Node.js:节点是否总是在退出之前等待setTimeout()完成?

  13. 13

    等待请求完成Node.js

  14. 14

    等待操作在node.js中完成

  15. 15

    node.js等待文件操作完成

  16. 16

    Node js:等待 100 个请求完成

  17. 17

    Node JS问题,并承诺在完成之前返回

  18. 18

    Node.js,等待所有Redis查询完成,然后再继续执行

  19. 19

    Node.js,等待所有Redis查询完成,然后再继续执行

  20. 20

    Node js for-loop在下一次迭代之前等待异步功能?

  21. 21

    JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

  22. 22

    JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

  23. 23

    异步和等待功能Node.js

  24. 24

    Node.js在异步(可读)完成之前完成(结束)流

  25. 25

    不要等待异步功能完成

  26. 26

    在部署HttpClient之前,我是否需要等待异步方法完成?

  27. 27

    在部署HttpClient之前,我是否需要等待异步方法完成?

  28. 28

    Node js - 通过循环同步执行函数

  29. 29

    如何在Node.js中等待子进程完成?

热门标签

归档