【发布时间】:2015-09-16 04:13:51
【问题描述】:
我有一个处理连接设置和池的数据库模块,以及一个依赖于数据库模块来执行查询的查询模块。我正在调整它们以使用 Promises 进行异步调用。到目前为止,I've adapted the query module - 现在我想转换数据库模块。
问题来了:数据库模块应该可以被查询模块直接和隐式使用(目前依赖于回调)。如何在两个模块的方法中使用 Promise,而不会将其变成曲折的小段落迷宫?
这是我到目前为止所做的:
数据库模块
getConnection: function(callback) { //this should return a promise
this.pool.getConnection(function(error, connection){
callback(error, connection);
});
},
查询模块这应该在getConnection 承诺上then,执行查询,然后为它的调用者拒绝/解决
request: function(queryRequest) {
return new Promise(function(resolve, reject){
Database.getConnection(function(error, connection){
if(error) {
reject({error: error, queryRequest: queryRequest});
} else {
connection.query(queryRequest.sql, queryRequest.values, function(error, rows, fields){
if(error) {
reject({error: error, queryRequest: queryRequest});
} else {
resolve({rows: rows, fields: fields, queryRequest: queryRequest});
}
connection.release()
});
}
});
});
},
【问题讨论】:
-
我不确定您为什么要求我们以问答形式解决您的特定问题,但我不喜欢这类问题。正如我之前所说,作为一个承诺粉丝和蓝鸟贡献者,我不介意在适当的支持渠道中问你的问题,但这个问题不会教给其他用户任何东西。
-
如果您在此处给出上一个问题的清晰摘要并突出您实际想要做的事情会更好。
-
这里的问题在哪里?如果这是一个规范的问题,您可能需要选择一些规范的问题来回答。
-
请在这个问题中添加一个问题。
-
我在这里猜测了你的意图;请检查修改。
标签: javascript node.js asynchronous promise