Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数中的nodejs回调-新手查询_Javascript_Node.js_Callback - Fatal编程技术网

Javascript 函数中的nodejs回调-新手查询

Javascript 函数中的nodejs回调-新手查询,javascript,node.js,callback,Javascript,Node.js,Callback,我有下面的函数从html页面提取一些变量,并通过I/o发布它们,这是正常工作的-但我想添加一个回调,以确保我可以找到这个函数是否已完全完成 请建议我如何添加一个回调纯粹是为了这个目的-因为我没有任何其他的回调需要 function RunScrapingPositions() { status = false; myhttp.get('https://example.com/PB.jsp', function (_html) { if (_html

我有下面的函数从html页面提取一些变量,并通过I/o发布它们,这是正常工作的-但我想添加一个回调,以确保我可以找到这个函数是否已完全完成

请建议我如何添加一个回调纯粹是为了这个目的-因为我没有任何其他的回调需要

function RunScrapingPositions() {
    status = false;
    myhttp.get('https://example.com/PB.jsp',
    function (_html) {
            if (_html && _html.length > 10) {          
            news.positions = {};
            $ = cheerio.load(_html);

            $('tr[id^="TR"]').each(function () {
                  status = true;
                  var symbol = $('td:nth-child(3)', this).text().trim();
                  var objob = {
                     'NQ': parseInt($('td:nth-child(11)', this).text().trim()),
                              };

                  var post = {
                        'symbol': symbol,
                        'nq': objob.NQ
                            };


            connection.query('INSERT INTO NP SET ?', post, function (err,result){
            if (err) 
            {console.log("NP sql insert error : " +symbol);}
            else {
                console.log("Posn - Step 3B - Position data inserted into NP Table : " +symbol);
                 }
        });




                var objstock = news.analysis[symbol];

                if (typeof objstock!='undefined') {
                    objstock.NQ = objob.NQ;
                    news.positions[symbol] = objob;
                    news.analysis[symbol] = objstock;

                if (status) {
                     console.log('Posn - Step 4 - Positions data pushed to page')
                     io.emit('news', news);

                            }
               }
                 else           
               {
               console.log('Posn - Step 4A - Position symbol not found');
               } 
            });


            if (timerPositions) {
                clearTimeout(timerPositions);
            }
            console.log('Posn - Step 5 - setTimer RunScrapingPositions:' + config.DelayExtractPositions);
            timerPositions = setTimeout(RunScrapingPositions, config.DelayExtractPositions);

        }

    });
}

您可以通过以下步骤实现回调:

接受回调函数作为参数:

function RunScrapingPositions(callbackDone) {
然后,在调用它的地方,传递该函数。您可以使用
bind
。如果你的条件是一切都完成了,那就称之为:

function RunScrapingPositions(callbackDone) {
    status = false;
    myhttp.get('https://example.com/PB.jsp', function (_html) {
        if (_html && _html.length > 10) {
            // ... 

            // pass the callback function on to the deferred call:
            timerPositions = setTimeout(
                    RunScrapingPositions.bind(null, callbackDone),
                    config.DelayExtractPositions
            );
        } else {
            // all is done, call the callback function:
            callbackDone();
        }
    });
}

您还可以使用jQuery的自定义事件工具$(document).trigger({eventName},obj或参数列表)来触发“事件”。您可以通过$(document)编写代码来侦听该事件。在({eventName},function(someArgsThatYouPass){do somethine here…})上。

如果您能正确缩进代码,将会有所帮助。谢谢。工作完美。