【发布时间】:2017-05-26 07:00:45
【问题描述】:
我知道节点是所有关于异步的东西,但我想在串行模式下做如下的事情:
发出 api 请求 > 将 body xml 转换为 JSON.stringify > 将字符串传递给模板。
request.get({url:url, oauth:oauth}, function(err, res, body){
parseString(body, function(err, result){
output = JSON.stringify(result);
res.render('home', { title: 'Fantasy Home',
output: output });
});
});
现在我想按顺序执行此操作,但是对于所有回调,我感到很困惑。
res.render 不能嵌套在回调中,因为 res 对象不存在。把它放在外面是行不通的,因为它会在回调执行之前运行,所以你会得到“未定义”的输出。
必须有一种按顺序做事的方法。为什么一切都是回调?为什么这些函数不能只返回一个常规的非回调结果?
我怎样才能做到这一点?
【问题讨论】:
-
至于为什么:@tjameson 解释的很好here
-
res.render doesn't work nested inside callbacks because the res object doesn't exist这是完全错误的。 res 对象存在。如果您有错误,那不是错误的原因 -
您的代码已经可以按顺序运行了。访问
res可能不起作用,因为您使用request.get回调的res参数对其进行了隐藏。 -
你明白@Bergi 的评论吗?这是解决您问题的关键
标签: javascript express