Javascript 节点控制器-异步传递匿名函数

Javascript 节点控制器-异步传递匿名函数,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,尝试使用async创建控制器,但无法将匿名函数作为第三个参数传递。我不断得到一个意外标记的解析错误{-'有什么想法吗?如果我直接在参数中传入函数(err,responses),错误就会消失。我基本上尝试迭代将返回的两个对象,为每个对象找到一个协定名称,然后分配一个为该协定分配的数据数组 var request = require('request'), helpers = require('../../helpers.js'), async = require('async'); module

尝试使用async创建控制器,但无法将匿名函数作为第三个参数传递。我不断得到一个意外标记的解析错误{-'有什么想法吗?如果我直接在参数中传入函数(err,responses),错误就会消失。我基本上尝试迭代将返回的两个对象,为每个对象找到一个协定名称,然后分配一个为该协定分配的数据数组

var request = require('request'),
helpers = require('../../helpers.js'),
async = require('async');

module.exports.getStatementBreakdown = function(req, res) {
    var httpGet,
    response,
    urls = [
        '/financial-advances/',
        '/financial-adjustments/'
    ];

    httpGet = function(url, callback) {
        var options = helpers.buildAPIRequestOptions(req, url);
        request(options,
            function(err, res, body) {
                var data = {};
                if(!err && res.statusCode === 200) {
                    data = JSON.parse(body);
                }
                callback(err, data);
            }
        );
    };

    response = function(err, responses) {}

    async.map(urls, httpGet, response) {
        var statementBreakdown = {},
        response,
        breakdown,
        i,
        j,
        contractName,
        key;

        for(i = 0; i < responses.length; i++) {
            response = responses[i];
            for(key in response) {
                if(key !== 'meta' || key !== 'notifications') {
                    breakdown = response[key];
                    for(j = 0; j < breakdown.length; j++) {
                        contractName = breakdown[j].reimbursementContract.name;
                    }
                }
            }
        }
        statementBreakdown[contractName] = [];
        statementBreakdown[contractName].push(breakdown);
        res.send(statementBreakdown);
    });
};
var request=require('request'),
helpers=require('../../helpers.js'),
async=require('async');
module.exports.getStatementBreakdown=函数(req,res){
var httpGet,
答复,,
URL=[
“/财务预付款/”,
“/财务调整/”
];
httpGet=函数(url,回调){
var options=helpers.buildAPIRequestOptions(req,url);
请求(选项,
功能(错误、恢复、正文){
变量数据={};
如果(!err&&res.statusCode==200){
data=JSON.parse(body);
}
回调(错误、数据);
}
);
};
response=函数(err,responses){}
map(URL、httpGet、响应){
var statementBreakdown={},
答复,,
崩溃
我
J
合同名称,
钥匙
对于(i=0;i
根据您发布的代码示例,您得到了一个意外的标记,因为您的大括号放错了位置

请参见此处:
async.map(URL、httpGet、response){
?大括号是意外的标记

当存在一个不应该出现的字符时,Javascript会给出一个意外的标记。在本例中,您在函数调用之后添加了一个大括号。大括号应该出现在控制流语句和函数声明之后

我不知道你到底想干什么,但也许是这样的

async.map(urls, httpGet, function(err, responses) {
        var statementBreakdown = {},
        response,
        breakdown,
        i,
        j,
        contractName,
        key;

        for(i = 0; i < responses.length; i++) {
            response = responses[i];
            for(key in response) {
                if(key !== 'meta' || key !== 'notifications') {
                    breakdown = response[key];
                    for(j = 0; j < breakdown.length; j++) {
                        contractName = breakdown[j].reimbursementContract.name;
                    }
                }
            }
        }
        statementBreakdown[contractName] = [];
        statementBreakdown[contractName].push(breakdown);
        res.send(statementBreakdown);
    });
});
async.map(URL、httpGet、函数(错误、响应){
var statementBreakdown={},
答复,,
崩溃
我
J
合同名称,
钥匙
对于(i=0;i

有关async.map的进一步帮助,请参阅。

根据您发布的代码示例,您将获得一个意外标记,因为您在错误的位置有一个大括号

请参见此处:
async.map(URL、httpGet、response){
?大括号是意外的标记

当存在一个不应该出现的字符时,Javascript会给出一个意外的标记。在本例中,您在函数调用之后添加了一个大括号。大括号应该出现在控制流语句和函数声明之后

我不知道你到底想干什么,但也许是这样的

async.map(urls, httpGet, function(err, responses) {
        var statementBreakdown = {},
        response,
        breakdown,
        i,
        j,
        contractName,
        key;

        for(i = 0; i < responses.length; i++) {
            response = responses[i];
            for(key in response) {
                if(key !== 'meta' || key !== 'notifications') {
                    breakdown = response[key];
                    for(j = 0; j < breakdown.length; j++) {
                        contractName = breakdown[j].reimbursementContract.name;
                    }
                }
            }
        }
        statementBreakdown[contractName] = [];
        statementBreakdown[contractName].push(breakdown);
        res.send(statementBreakdown);
    });
});
async.map(URL、httpGet、函数(错误、响应){
var statementBreakdown={},
答复,,
崩溃
我
J
合同名称,
钥匙
对于(i=0;i

有关async.map的更多帮助,请参阅。

async
是ES2016中的一个关键字。这可能是问题所在,也可能不是问题所在,具体取决于您的node.js版本。请尝试重命名您的
async
变量。async是我正在使用的库的名称-我在另一个控制器中使用它,但我们不使用注释性函数代码you posted不是您所说的不起作用的;它没有使用带有
async.map()的匿名函数
。你能发布不起作用的代码吗?
async
是ES2016中的一个关键字。这可能是问题所在,也可能不是问题所在,取决于你的node.js版本。尝试重命名你的
async
变量。async是我正在使用的库的名称-我在另一个控制器中使用了它,但我们没有使用注释性函数你发布的不是你说的不起作用的代码;它没有使用匿名函数
async.map()
。你能发布不起作用的代码吗?