我在一个文件中的代码是下面这样的
let queryResult = mysqlClient.searchDBResult();
另外你一个文件中的代码是下面这样的
exports.searchDBResult = () =>{
let queryString = 'select * from icafeinfo order by userid desc limit 7;';
mysqlClient.connect(function (){
mysqlClient.query(querystring, function (err, rows){
if (err) throw err;
if(searchResult) {
//请问这里我怎么row获取的值返回给第一个文件调用的代码呢
return rows;
}
});
});
};
就是第二段代码我执行了数据库查询操作,怎么把查询结果返回给第一段代码呢?就是queryResult
的值是rows的值。
最好能给个demo看看吧
怪我咯2017-04-17 15:39:37
謝邀。
經典非同步。
1、回調
mysqlClient.searchDBResult(function(queryResult){
console.log(queryResult)
});
exports.searchDBResult = (callback) =>{
let queryString = 'select * from icafeinfo order by userid desc limit 7;';
mysqlClient.connect(function (){
mysqlClient.query(querystring, function (err, rows){
if (err) throw err;
if(searchResult) {
//请问这里我怎么row获取的值返回给第一个文件调用的代码呢
callback(rows);
}
});
});
};
2.其他形式異步, 以Promise為例
mysqlClient.searchDBResult().then(function(queryResult){
console.log(queryResult)
})
exports.searchDBResult = () =>{
return new Promise((resolve, reject)=>{
let queryString = 'select * from icafeinfo order by userid desc limit 7;';
mysqlClient.connect(function (){
mysqlClient.query(querystring, function (err, rows){
if (err) reject(err);
if(searchResult) {
//请问这里我怎么row获取的值返回给第一个文件调用的代码呢
resolve(rows);
}
});
});
});
};
阿神2017-04-17 15:39:37
使用co配合promise吧
co
exports.searchDBResult* = () =>{
let queryString = 'select * from icafeinfo order by userid desc limit 7;';
return new Promise(function(resolve,reject){
mysqlClient.connect(function (){
mysqlClient.query(querystring, function (err, rows){
if (err) return reject(rows);
if(searchResult) {
//请问这里我怎么row获取的值返回给第一个文件调用的代码呢
return resolve(rows);
}
});
});
})
};
co(function* () {
var result = yield mysqlClient.searchDBResult();
return result;
}).then(function (value) {
console.log(value);
}, function (err) {
console.error(err.stack);
});
PHPz2017-04-17 15:39:37
Promise.coroutine(function* () {
yield Promise.delay(500) console.log('after first delay')
yield Promise.delay(1000) console.log('延迟几秒后') }
)()
Promise.coroutine由bluebired提供,類似庫有tj的co
黄舟2017-04-17 15:39:37
回調方式:
exports.searchDBResult = (cb) =>{
let queryString = 'select * from icafeinfo order by userid desc limit 7;';
mysqlClient.connect(function (){
mysqlClient.query(querystring, function (err, rows){
if (err) throw err;
if(searchResult) {
//请问这里我怎么row获取的值返回给第一个文件调用的代码呢
cb(rows)
}
});
});
};
mysqlClient.searchDBResult(function(rows) {
//you can use the result rows in here
})