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 用于循环顺序(具有异步功能)_Javascript_Node.js_Loops_For Loop_Request - Fatal编程技术网

Javascript 用于循环顺序(具有异步功能)

Javascript 用于循环顺序(具有异步功能),javascript,node.js,loops,for-loop,request,Javascript,Node.js,Loops,For Loop,Request,我有以下代码: exports.formatDepArrTables=函数(jsonReturn、类型、地名、回调){ 让toSend=“”; 如果(类型==‘出发’){ for(设j=0;j

我有以下代码:

exports.formatDepArrTables=函数(jsonReturn、类型、地名、回调){ 让toSend=“”; 如果(类型==‘出发’){ for(设j=0;j 当我运行这段代码时(我使用NodeJS),它会使1/10,2/10。。。从第一个循环开始,但它没有在第一个循环的第一次迭代中迭代第二个循环(它显示“第一个循环的结束”并开始第二个循环)

getDistributionFromDistributionId
是一种自定义方法,它在API上发出请求(带有'request'节点JS模块)

当然,我需要有
getDisruptionFromDisruptionId
提供的信息来运行我的下一个循环

此代码部分的父函数返回一个回调,该回调需要在两个循环的末尾“填充”


有什么想法吗?

request
是异步函数,你需要在你的代码中添加async/wait或者使用递归

request
是异步的,函数,你需要在代码中添加async/wait或者使用递归添加async/wait,现在已经很有魅力了!谢谢
exports.formatDepArrTables = function(jsonReturn, type, placeName, callback) {
    let toSend = "";

    if (type == 'departure') {
        for (let j = 0; j < jsonReturn.departures.length; j++) {
            console.log("DEPARTURES LOOP j = " + j + "/" + jsonReturn.departures.length);

            if(currentDeparture.display_informations.links[0] === undefined) {
                toSend += ""; // setting some string informations
            }
            else {
                let oceTrainId = ""; // random number given by a json
                _this.getDisruptionFromDisruptionId(oceTrainId, function(data) {
                    for(let i = 0; i < data.disruptions[0].impacted_objects[0].impacted_stops.length; i++) {
                        if(currentImpactedStop.stop_point.label == placeName) {
                            toSend += "string";
                        }
                    }
                });
            }
        }
        console.log("End of the first loop");
        return callback(toSend);

    } else if (type == 'arrival') {
        // copy&paste
    } else {
        throw new Error("not defined");
    }
};