Javascript async.瀑布方法中未定义回调
从下面的代码中,我没有得到result1数据。没有定义。有人能帮我吗Javascript async.瀑布方法中未定义回调,javascript,node.js,async.js,Javascript,Node.js,Async.js,从下面的代码中,我没有得到result1数据。没有定义。有人能帮我吗 async.waterfall([ function(callback) { request({ method: 'GET', headers: { 'Content-Type': 'application/json' }, url: url }, functi
async.waterfall([
function(callback) {
request({
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
url: url
}, function(error, response, body) {
if (error) {
callback(error);
} else {
var result = JSON.parse(body);
callback(null, result); //sending to next function
}
});
},
function(result, callback) {
async.eachSeries(result, function(item, callback) {
request({
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
url: url+item.id
}, function(error, response, body) {
if (error) {
callback(error);
} else {
var result1 = JSON.parse(body);
callback(null, result1);
}
});
}, function(err, result1) {
if (!err) {
callback(null, result1);
} else {
callback(err);
}
});
},
function(result1, callback) {
console.log(result1); // getting undefined
request({
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
url: url
}, function(error, response, body) {
if (error) {
callback(error);
} else {
var result2 = JSON.parse(body);
callback(null, result2);
}
});
}
], function(error, res) {
console.log(res); // process final result
});
对于类似于此的签名-回调(err),没有第二个参数,这就是为什么result1
是undefined
若你们需要在循环完成后得到结果,你们需要使用,就像这样
async.mapSeries(result, function(item, callback) {
request({
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
url: url + item.id
}, function(error, response, body) {
if (error) {
callback(error);
} else {
var result1 = JSON.parse(body);
callback(null, result1);
}
});
}, function(err, result1) {
if (!err) {
callback(null, result1);
} else {
callback(err);
}
});