[英]Issue while using q.js promises
以下代碼使用q.js來獲取學生的詳細信息。 一切工作正常,除了未將獲取的類別和城市映射到可變的studentdetails
。 它僅包含由郵件查詢獲取的詳細信息(名稱,電子郵件,id,dob)。 我要去哪里錯了? 任何線索將不勝感激。
//fetches category of student
var getJobCategories = function(student) {
var deferred = Q.defer();
var categoryquery = 'select c.name,c.id from category c,student_category sc where xxxx';
db.query(categoryquery, function(err, categories, fields) {
if(categories.length == 0) {
student.categories = "NA";
} else {
student.categories = categories;
}
console.log(student)//prints details with categories
deferred.resolve();
});
return deferred.promise;
}
//fetches city of student
var getCurrentCity = function(student) {
var deferred = Q.defer();
var cityquery = 'select l.name,l.id from location l ,student_location sl where xxxx';
db.query(cityquery, function(err, city) {
if(city.length == 0) {
student.currentcity = "NA";
} else {
student.currentcity = city;
}
console.log(student)//prints details with city
deferred.resolve();
});
return deferred.promise;
}
var query='select name,email,id,dob from student limit 1,10';
db.query(query, function(err1, studentdetails) {
var promise1=studentdetails.map(function(student){
var result=getJobCategories(student)
});
var promise2=studentdetails.map(function(student){
getCurrentCity(student)
});
var allpromises= Q.all([
promise1,promise2
]);
Q.allSettled(allpromises)
.then(function (results) {
next(null,{
result: studentdetails,
msg: "Fetched successfully"
});
});//then
});//query
您可以嘗試以下方法:
db.query(query, function(err1, studentdetails) {
var allStudentJobCategories =
studentdetails.map(function(student){
return getJobCategories(student)
});
var allStudentCities =
studentdetails.map(function(student){
return getCurrentCity(student)
});
var allpromises= Q.all([
Q.all(allStudentJobCategories), Q.all(allStudentCities)
]);
Q.allSettled(allpromises)
.then(function (results) {
next(null,{
result: studentdetails,
msg: "Fetched successfully"
});
});//then
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.