如何 return nodeJs 中异步函数(异步模块)的结果
How to return a result of async function (async module) in nodeJs
我在我的项目中使用了异步模块。这是我在文件 1
中的代码
exports.check = function(option){
var object = {};
async.parallel([
function(callback){
if(!option.one){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.two){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.three){callback(null, true);}else{ callback(null, false);}
}
],
function(err, results){
if(results[0] && results[1] && results[2] ){
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = true;
}else{
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = false;
}
})
return object;
}
这是文件 2 中的代码。我使用文件 1 中的函数:
var isexit = db.check(option);
console.log(isexit);
问题是控制台是 'undefined'。
如果我将文件 1 中的代码更改为行 (return object):
exports.check = function(option){
var object = {};
async.parallel([
function(callback){
if(!option.one){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.two){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.three){callback(null, true);}else{ callback(null, false);}
}
],
function(err, results){
if(results[0] && results[1] && results[2] ){
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = true;
}else{
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = false;
}
return object;
})
}
会报错。那么如何 return 文件 1 中的函数结果。请帮忙。非常感谢!
你不能只 return 它,你必须为你的函数提供回调:
exports.check = function(option, callback){
async.parallel([
//...
], function(err, results){
var object = {};
//...
callback(err, object);
});
}
那么您的通话将如下所示:
db.check(option, function(isexit){
console.log(isexit);
});
我在我的项目中使用了异步模块。这是我在文件 1
中的代码exports.check = function(option){
var object = {};
async.parallel([
function(callback){
if(!option.one){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.two){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.three){callback(null, true);}else{ callback(null, false);}
}
],
function(err, results){
if(results[0] && results[1] && results[2] ){
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = true;
}else{
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = false;
}
})
return object;
}
这是文件 2 中的代码。我使用文件 1 中的函数:
var isexit = db.check(option);
console.log(isexit);
问题是控制台是 'undefined'。 如果我将文件 1 中的代码更改为行 (return object):
exports.check = function(option){
var object = {};
async.parallel([
function(callback){
if(!option.one){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.two){callback(null, true);}else{ callback(null, false);}
},
function(callback){
if(!option.three){callback(null, true);}else{ callback(null, false);}
}
],
function(err, results){
if(results[0] && results[1] && results[2] ){
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = true;
}else{
object.one = results[0];
object.two = results[1];
object.three = results[2];
object.total = false;
}
return object;
})
}
会报错。那么如何 return 文件 1 中的函数结果。请帮忙。非常感谢!
你不能只 return 它,你必须为你的函数提供回调:
exports.check = function(option, callback){
async.parallel([
//...
], function(err, results){
var object = {};
//...
callback(err, object);
});
}
那么您的通话将如下所示:
db.check(option, function(isexit){
console.log(isexit);
});