有没有办法可以在异步响应中的对象中存储回调数据?
例如,在下面的示例中,我需要通过数组索引(response[0], response[1]
等)访问对象。但我希望像response.user_employed
或response.user_employed
一样访问它。我的代码如下。提前谢谢!
async.waterfall(
[
function uno(callback) {
knex('user').where({
employed: true
}).then(function(data) {
callback(data);
}).catch(function(error) {
console.log('error: ' + error);
});
},
function dos(callback) {
knex('user').where({
employed: false
}).then(function(data) {
callback(data);
}).catch(function(error) {
console.log('error: ' + error);
});
}],
function(err, response) {
console.log(response[0]); // returns data from function uno
console.log(response[1]); // returns data from function dos
}
);
答案 0 :(得分:1)
parallel或series
async.parallel([
function(callback){
knex('user').where({
employed: true
}).then(function(data) {
callback(data);
}).catch(function(error) {
console.log('error: ' + error);
});
},
function(callback){
knex('user').where({
employed: false
}).then(function(data) {
callback(data);
}).catch(function(error) {
console.log('error: ' + error);
});
}
],
// optional callback
function(err, results){
console.log(response[0]); // returns data from function 1
console.log(response[1]); // returns data from function 2
});
或
async.series({
employed: function(callback){
knex('user').where({
employed: true
}).then(function(data) {
callback(data);
}).catch(function(error) {
console.log('error: ' + error);
});
},
umemployed: function(callback){
knex('user').where({
employed: false
}).then(function(data) {
callback(data);
}).catch(function(error) {
console.log('error: ' + error);
});
}
},
function(err, results) {
console.log(results.employed);
console.log(results.unemployed);
});