如何在节点js中进行同步

时间:2015-04-23 10:44:11

标签: node.js

我试图让它简单地同步在函数之前开始并在函数之后结束的连接字符串。请参阅代码段并简化输出,如:

<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);

1 个答案:

答案 0 :(得分:1)

您可以使用诸如Q之类的promise来编写同步查看/行为异步代码。 使用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);
});

您也可以使用超时技术。承诺更好,并且符合ES6规范,可以与即将推出的javascript集成。

根据评论,存在更多具有更多功能的现代承诺框架。 bluebird提供了一种很容易宣传现有功能的好方法。