如何把回调函数的值传回主函数呢?

'use strict';
function doSQL(sql) {

        let mysql = require('mysql');
        let row = 'unfinished';
        let connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: 'abcde1234',
            database: 'user'
        });
        connection.connect();

        connection.query(sql, function (err, rows) {   
        //这里总是在return之后执行
            row=rows;
            connection.end();
        });

    return row;//  返回 unfinished
}
module.exports=doSQL;

是不是应该用generator async 什么的?(要是有多种方法更好啦~ 谢谢
阅读 3.7k
4 个回答
function doSQL(sql,callback) {
   ...
  connection.query(sql, function (err, rows) {   
            row=rows;
            callback(row)
            connection.end();
        });
}
module.exports=doSQL;

doSQL.query(sql,function(row){
   
})

定义个回调函数 代码大概这样子。主函数内回调回来

node中 异步问题 callback,promise,async 几种方案,自己百度慢慢学把!~!~!~

这个要求不可能完成.....js事件循环机制,return前的回调函数一定在return执行完才执行

function doSQL(sql) {

    let mysql = require('mysql');
    let row = 'unfinished';
    let connection = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: 'abcde1234',
        database: 'user'
    });
    return Promise.resolve(sql)
        .then(s=>{
           connection.connect()
           return new Promise((resolve,reject)=>{
            connectoin.query(s,function(err,rows)){
             if(err){
              reject(err)
                }
             resolve(rows)               
               }) 
            })
          } 
}

module.exports=doSQL;

//使用Promise .异步操作,如果不改你的代码结构,要回个值的话上async

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题