MySQL in NodeJS 是否能够等待全部 query 回传结果才继续执行

 我来答
兄弟连教育
2016-09-01 · 百度知道合伙人官方认证企业
兄弟连教育
兄弟连教育成立于2006年,11年来专注IT职业教育,是国内专业的IT技术培训学校。2016年成功挂牌新三板(股票代码:839467)市值过亿。开设专注程序员培训专注php、Java、UI、云计算、Python、HTML5、
向TA提问
展开全部
用下 eventproxy
@alsotang 谢谢前辈回覆,采用同步类型的套件应该不是解决我当前遇到的问题,我用了一点土法炼钢的方式解决了,看完的话您大概会知道我遇到的问题XD
var SQLQueryCheck = {
createArrayInit: function (size) {
var arr = new Array();
for (var i = 0 ; i < size ; i++)
arr[i] = false;
return arr;
},
checkedAllQueried: function(arr) {
for (var i = 0 ; i < arr.length ; i++)
if (arr[i] === false)
return false;
return true;
}
}

var getAllCouponsInfoByManagerUidAndRange = function (uid, range, callback) {
// Select the special range in coupons, the range object have 'start' and 'amount'.
var sql_1 = "SELECT * FROM coupon WHERE coupon_id BETWEEN " + range.start + " AND " + (range.start + range.amount - 1);
dbclient.query(sql_1, function (err, coupons) {
// Fixed the properties.
coupons = TaskDateConvertToJson(coupons, new Array("create_time", "used_time"));

var queryChecked = SQLQueryCheck.createArrayInit(coupons.length);

for (var i = 0 ; i < coupons.length ; i++) {
(function (j) {
// Get the employees' user info of having received coupons.
findUserByUid(coupons[j].uid, function (employee) {
// Get the managers of creating coupons.
findUserByUid(coupons[j].manager, function (manager) {
// Get the employees' task info of having received coupons.
findTaskByTid(coupons[j].tid, function (task) {
coupons[j]['employee'] = employee;
coupons[j]['manager'] = manager;
coupons[j]['task'] = task;
delete coupons[j]['uid'];
delete coupons[j]['tid'];
queryChecked[j] = true;
if (SQLQueryCheck.checkedAllQueried(queryChecked))
callback(coupons);
});
});
});
})(i);
}
});
}

光看标题我觉得eventproxy可以解决这种问题。eventproxy也是异步的 又不是同步
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式