gpt4 book ai didi

javascript - async.waterfall 方法中未定义回调

转载 作者:行者123 更新时间:2023-12-02 15:32:49 24 4
gpt4 key购买 nike

从下面的代码中我没有得到 result1 数据。这是未定义的。有人可以帮助我吗?

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
});

最佳答案

对于eachSeries签名看起来像这样 -callback(err),没有第二个参数,这就是为什么 result1undefined

如果您需要在循环完成后获取结果,则需要使用 .mapSeries ,像这样

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);
}
});

关于javascript - async.waterfall 方法中未定义回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33184446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com