在_.forEach构造中提供回调

时间:2017-11-09 03:22:17

标签: javascript postman

(在Postman环境中工作)检测到以下代码遍历所有url请求而不打印结果。

    _.forEach(
            urls,
            function (myUrl) {            
                pm.sendRequest({
                    url: myUrl,
                    method: 'GET',
                    header: {
                        'content-type': 'application/json'                    
                    }
                }, function (err, res) {
                    console.log(res)
                });            
            }
        )
        pm.environment.set(`sections`,sections);
    }

有没有办法在forEach中提供回调,可能会出现类似下面的代码。或者有任何替代方案。

    function callback() {
        console.log('callback');
    }

    _.forEach(
            urls,
            function (myUrl,callback) {            
                pm.sendRequest({
                    url: myUrl,
                    method: 'GET',
                    header: {
                        'content-type': 'application/json'                    
                    }
                }, function (err, res) {
                    console.log(res)
                });            
            }
        )
        pm.environment.set(`sections`,sections);
    }

我最初认为最后的响应处理功能会处理这个问题,但它并没有。

1 个答案:

答案 0 :(得分:0)

最好将逻辑分支到另一个函数getUrl并将回调传递给它。

以下代码有效:

_.forEach (
    urls,
    function (myUrl) {
        getUrl(myUrl,function (err,res) {
            if (err) {
                console.log(err);
            } else {
                console.log(JSON.stringify(res));
            }
        });
    }
);

function getUrl(myUrl, callback) {
    var call = {
        url: myUrl,
        method: 'GET',
        header: {
            "Authorization": `Bearer ${token}`,
            "Content-Type": "application/json"
        }
    };

    pm.sendRequest(
        call,
        function (err, res) {
            callback (err,res);
        }
    );
}