【发布时间】:2017-11-14 17:09:27
【问题描述】:
我正在使用我的公司数据库,并且正在尝试设置路线。我得到的数据是一个包含 1000 个值的 JSON 数组。
这是函数--
router.get('some_route', function(req, res, next){
var ress = [];
var name = req.params.name;
baWelcomeController.autoComplete(name).then(function(succ){
var x = Object.values(succ[0][0]);
res.status(200).send(x);
}).catch(function(err){
res.status(404).send(err);
console.log("error in router.get", err);
});
});
现在看看我的代码的object.values 部分,从互联网上我知道它是一个 O(n) 函数,所以 nodejs 应该将它推入调用堆栈并同时执行其他函数,但是发生了什么我是否得到了预期的响应。 succ[] 中的值的数量是 1000,所以我写了另一个函数注释 Object.values 并写了一个 for 循环 -
router.get('some_route', function(req, res, next){
var ress = [];
var name = req.params.name;
baWelcomeController.autoComplete(name).then(function(succ){
var x = 0;
for(var i = 0; i <= 1000; i++)
x += i;
res.status(200).send(x);
}).catch(function(err){
res.status(404).send(err);
console.log("error in router.get", err);
});
});
现在我没有得到 x 的值作为响应,我得到一个空对象。我发现这种行为很奇怪!谁能给我解释一下。
【问题讨论】:
标签: javascript json node.js asynchronous callback