Seb*_*wak 7 javascript asynchronous node.js express
我正在使用Express 4.0节点.我在网上(包括文档)找不到有关在路由中嵌入异步代码的任何内容.
使用中间件非常简单:
app.use('/something', function (req, res, next)
{
doSomethingAsync(function(err, probablySomethingElse)
{
// probably some error checking
next();
});
});
Run Code Online (Sandbox Code Playgroud)
路由的问题是没有next回调,那么表达式如何知道何时转移到下一个工作?
app.get('/something', function (req, res)
{
res.render('someTemplate');
// no next() here, but it still works
});
Run Code Online (Sandbox Code Playgroud)
如果我不得不猜测,我会说在上述功能退出后,快速移动到下一个任务.但出于好奇,我推出了以下代码......
app.get('/something', function (req, res, next)
{
console.log(next);
});
Run Code Online (Sandbox Code Playgroud)
......实际上有一些next回调通过了.那么这里发生了什么?它是如何在幕后工作的?我怎样才能将异步代码放在那里?
Express会等到你打电话res.render关闭套接字.这意味着你可以传入res.render一个需要X秒执行的回调,一切都会工作.
将next允许你去映射你的价值在未来的路线,你可以在这里找到一个很好的解释:什么是快车"下一步"用于参数?
但根据你在这里问的问题.render()在res对象上调用该时刻,然后将发送数据并关闭套接字.
| 归档时间: |
|
| 查看次数: |
4010 次 |
| 最近记录: |