NodeJs,异步函数在 api 路由返回后完成
NodeJs, does asynchronous function complete after api route has returned
我的本地测试发现这个问题是正确的。
给定以下代码,其中"asyncOne"和"asyncTwo"是异步函数,如果"asyncTwo"在"asyncOne"之前完成,"asyncOne"是否还有时间完成执行?
router.get("/", function (req, res, next) {
asyncOne(function () {
console.log("Completed asyncOne");
});
asyncTwo(function () {
console.log("Completed asyncTwo");
return res.json("Done.");
});
});
是的,所有代码都将执行。但是您无法在asyncOne
函数中return res.json("Done.");
,因为已经发送了结束响应。
如果您希望在完成两个异步函数时调用返回,则应签出异步模块。真的很棒。
也许你应该像这样调用你的函数:
router.get("/", function (req, res, next) {
Promise.all[asyncOne(), asyncTwo()].then(() => {
return res.json("Done.");
});
});
或者像这样:
router.get("/", function (req, res, next) {
asyncOne(function () {
console.log("Completed asyncOne");
asyncTwo(function () {
console.log("Completed asyncTwo");
return res.json("Done.");
});
});
});
相关文章:
- 如何将返回的路由对象串行化并本地存储在传单路由机中
- 如何格式化我返回的url,使其符合我想要的路由
- nodejs或expressjs在没有返回响应的情况下重复调用路由
- 所有可能的路由给定特定的节点,返回到起始节点
- 设置快速路由,找不到API调用返回404
- Ember.js:路由返回多个模型,包括一个promise,给出错误
- 角度.js模板在离开并返回路由之前不会渲染
- 余烬 - 如何将属性从路由文件传递到返回 401 的车把模板
- NodeJs,异步函数在 api 路由返回后完成
- 如何告诉MVC 4视图返回带有子路由的JSON结果
- ajax返回时的角度加载路由
- 角度路由解析返回未定义
- Javascript(Jquery)调用MVC3 Controller/Action/ID的URL路由问题,返回404,
- Node.js AJAX路由在评估引用的函数之前返回数据
- 服务器在ajax调用上返回空响应可能是路由错误
- Backbone.History.扩展({loadUrl: ..})对于有效路由返回false
- js车把根据当前路由返回不同的文本
- Ajax通过javascript路由,控制器应该返回json并返回html页面
- Express js路由返回404
- Ember.js返回路由时无法在路径中找到视图