如何使节点js同步

我试图让它简单地同步在函数之前开始的串联string,并在函数之后结束。 请参阅代码片段,并简单地得到如下输出:

<products> <proudct_name>Product1</product_name> <proudct_name>Product2</product_name> <proudct_name>Product3</product_name> </products> 

任何积极的答复将不胜感激。

 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : DB_USER, password : DB_PASS, database : DB_NAME, }); connection.connect(); var query = connection.query('SELECT * FROM tbl_product limit 0,3'); var str = '<products>'; query.on('result', function (row) { str += '<product_name>'row.product_name + '</product_name>'; }); str += '</products>'; console.log(str); 

您可以使用像Q这样的promise来编写同步查看/行为asynchronous代码。 随着Q,你会写如上

 var str = '<========='; var defer = Q.defer(); query1.on('result', function (row) { defer.resolve(row.company_name + ','); }); defer.promise.then(function(row){ var str = "<=======" + row.company + "====>"; console.log(str); }); 

您也可以使用超时技术。 承诺是更好的,在即将到来的JavaScript集成在ES6规范。

根据评论,更现代的承诺框架存在更多的function。 蓝鸟提供了一个很好的方式来轻松地提供现有的function。