如何从 Node.js 快速操作处理程序执行延迟响应?
使用 Express (对于 node.js) 回调后如何写响应?
以下是一个最小的示例。 posix.cat
是一个返回承诺的函数,up
对结果执行一些操作,我想将其作为响应发送。
require.paths.unshift('lib');
require('express');
var posix = require('posix');
get('/', function () {
function up(s) {
return s.toUpperCase();
}
return posix.cat('/etc/motd').addCallback(up);
});
run(3001);
客户永远不会得到回应。
我也尝试过对此的变体:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.respond(s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
但这往往会使一切崩溃:
[object Object].emitSuccess (node.js:283:15)
[object Object].<anonymous> (node.js:695:21)
[object Object].emitSuccess (node.js:283:15)
node.js:552:29
node.js:1027:1
node.js:1031:1
Using Express (for node.js)
How do I write a response after a callback?
The following is a minimal example. posix.cat
is a function that returns a promise, up
does something to the result, and I want to send that as the response.
require.paths.unshift('lib');
require('express');
var posix = require('posix');
get('/', function () {
function up(s) {
return s.toUpperCase();
}
return posix.cat('/etc/motd').addCallback(up);
});
run(3001);
The client never gets a response.
I've also tried variations on this:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.respond(s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
but that tends to crash everything:
[object Object].emitSuccess (node.js:283:15)
[object Object].<anonymous> (node.js:695:21)
[object Object].emitSuccess (node.js:283:15)
node.js:552:29
node.js:1027:1
node.js:1031:1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据this,
响应<的方法#2的问题< /code> 在设置状态代码之前被调用。
这有效:
According to this, the problem with approach #2 that
respond
was called before a status code was set.This works: