【发布时间】:2015-01-18 15:00:24
【问题描述】:
我正在尝试从 Mssql 服务器中获取一些数据。我有一个带循环的函数。该函数将一些数据返回给回调。如何将 kriskowal 的“q”中的数据放入 resultset 变量中?
pet.getNameByID 和 adress.getNameByID 函数将数据返回到回调!
感谢您的帮助!
尼尔斯你好
exports.get = function(callback) {
edge.func("sql", {
source: 'SELECT * FROM people'
})(null, function(error, result) {
if (error) {
throw (error)
}
if (result) {
var resultset = []
for (var i in result) {
var row = result[i];
q.all([
// get pet name
q.fcall(function() {
var deferred = q.defer();
pet.getNameByID({
id: 32155
}, function(data) {
deferred.resolve(data);
});
return deferred.promise;
}),
// get adress
q.fcall(function() {
var deferred = q.defer();
adress.getNameByID({
id: 23
}, function(data) {
deferred.resolve(data);
});
return deferred.promise;
}),
]).spread(function(resultPet, resultAdress) {
// Data!!!!
return {
petData: resultPet,
adressData: resultAdress
};
});
resultset.push( /* How can i push the data return from spread() into the resultset array? */ )
}
callback(resultset);
}
});
});
【问题讨论】:
-
你为什么不使用另一个
Q.all? -
我在 "for (var..." 之后的第二行使用 q.all。或者有更好的解决方案吗?
标签: javascript node.js callback promise q