【发布时间】:2015-03-04 08:40:21
【问题描述】:
我正在尝试在 Node.js/Express 中创建一个路由,该路由从两个查询中读取数据,然后根据来自 queires 的数据增加一个计数。由于 Node.js 是异步的,所以在读取所有数据之前会显示我的总数。
我创建了一个简单的示例来说明我目前正在做的事情
var express = require('express');
var router = express.Router();
var total = 0;
/* GET home page. */
router.get('/', function(req, res, next) {
increment(3);
increment(2);
console.log(total);
res.end();
});
var increment = function(n){
//Wait for n seconds before incrementing total n times
setTimeout(function(){
for(i = 0; i < n; i++){
total++;
}
}, n *1000);
};
module.exports = router;
我不确定我必须做什么才能等到两个函数都完成后再打印总数。我是否必须创建一个自定义事件发射器来实现这一点?
【问题讨论】:
-
你传递回调。事件发射器也可以工作。或者承诺。将问题视为必须“等待”直到完成某事是错误的。您宁愿将其视为“我如何知道 X 何时完成以运行 Y”。而回调、事件或承诺都是该问题的解决方案。
标签: javascript node.js asynchronous