Node.js 在nodejs中回调函数执行完成后发送响应
我对nodejs中的回调函数和循环有一个问题,如何才能在回调函数执行完成后发送响应Node.js 在nodejs中回调函数执行完成后发送响应,node.js,mongoose,Node.js,Mongoose,我对nodejs中的回调函数和循环有一个问题,如何才能在回调函数执行完成后发送响应 app.post('/data', function(req,res){ var send = [] for (var i =0; i < p_objReq.body.quantity; i++) { Instruments.count({//condetion}, function(err, count){ //using count and other parameters I am
app.post('/data', function(req,res){
var send = []
for (var i =0; i < p_objReq.body.quantity; i++) {
Instruments.count({//condetion}, function(err, count){
//using count and other parameters I am generating the code which is unique
Instruments.find({id: 'rondom_generated_code'},function(err, instrumentsCount){
if(instrumentsCount.length == 0){
send.push(rondom_generated_code)
if(send.length == p_objReq.body.quantity)
p_objRes.json({success : true, data : send})
}
else{
Instruments.count({//condetion}, function(err, count){
//using count and other parameters I am generating the code which is unique
send.push(rondom_generated_code)
if(send.length == p_objReq.body.quantity)
p_objRes.json({success : true, data : send})
})
}
})
})
}
})
app.post('/data',函数(req,res){
var send=[]
对于(var i=0;i
当我这样写的时候,它发送的是上次生成的相同的随机代码。我试着删除整个内容,用函数编写并回调,但它也不起作用一个解决方案是使用,这是Promise
库中的一个。更多关于Q.js
的API,请参考其中的链接。这里有一个示例代码可以帮助您,如果我能正确地回答您的问题
var Promise = require('Q');
app.post('/data', function(req,res){
var send = [];
var p = function () {
var deferred = Q.defer();
Instruments.count({condetion}, function(err, count){
//using count and other parameters I am generating the code which is unique
if (err) {
deferred.reject(new Error(error));
} else {
send.push(randomnumber)
}
});
return deferred.promise;
}
var ps = [];
for (var i =0; i < p_objReq.body.quantity; i++) {
ps.push(p);
}
Q.all(ps).then(function(){ res.json({success : true, data : send}); });
});
var Promise=require('Q');
app.post('/data',函数(req,res){
var send=[];
var p=函数(){
var deferred=Q.deferred();
仪器.计数({condention},函数(err,count){
//使用计数和其他参数,我生成的代码是唯一的
如果(错误){
延迟。拒绝(新错误(错误));
}否则{
发送.推送(随机数)
}
});
回报。承诺;
}
var ps=[];
对于(var i=0;i