节点中的回调和异步执行?

时间:2016-05-27 01:19:54

标签: javascript node.js asynchronous

我有一个函数可以将一堆数据生成到数据库中进行测试,然后最后向浏览器发送文本响应。我是节点的新用户,在任何执行完成之前看到响应和文本正在打印。

我尝试过一系列不同的方法来看待顺序执行,下面是一种疯狂的糟糕方式,但仍然无法正常工作。我该怎么做才能确保for循环数据完成,c.end()执行然后调用DONE? //生成新数据以持久存储到数据库中     function data_generation(call_back){

  //Force generate random entries into the test DB (eventually change to monitor individual key requests)
  for (var i = 0; i < NUM_ENTRIES; i++) {
    c.query("INSERT INTO individual_key_log \
              (reference_key, access_count, last_updated, last_ip) \
                VALUES ('Johnson" + Math.random()*100 + "', " + (Math.random()*100) +", '"+Date.now()+"', '"+req.connection.remoteAddress+"'\
              );",
            function(err, rows) {
      if (err) {
        throw err;
      }
      else {
        console.log("Counter: " + counter);
        counter++;
      }
    });
    call_back();
  }
};

function completion_func() {
  console.log("DONE");
  res.send("done");
};


data_generation(completion_func);

0 个答案:

没有答案