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