gpt4 book ai didi

javascript - 在 Node.js 中继续之前如何等待函数完成

转载 作者:数据小太阳 更新时间:2023-10-29 05:49:50 25 4
gpt4 key购买 nike

我正在尝试在 Node.js/Express 中创建一个路由,该路由从两个查询中读取数据,然后根据来自查询的数据增加一个计数。由于 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;

我不确定我需要做什么才能等到两个函数都完成后再打印总数。我是否必须创建自定义事件发射器才能实现此目的?

最佳答案

拥抱异步性:

var express = require('express');
var router = express.Router();


var total = 0;

/* GET home page. */
router.get('/', function(req, res, next) {
increment(3, function() { // <=== Use callbacks
increment(2, function() {
console.log(total);
res.end();
});
});
});



var increment = function(n, callback){ // <=== Accept callback
//Wait for n seconds before incrementing total n times
setTimeout(function(){
for(i = 0; i < n; i++){
total++;
}
callback(); // <=== Call callback
}, n *1000);
};
module.exports = router;

或者使用 promises 库,或者使用事件。最后,它们都是语义略有不同的异步回调机制。

关于javascript - 在 Node.js 中继续之前如何等待函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28849900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com