Javascript 如何从node.js express操作处理程序执行延迟响应?
使用(用于) 如何在回调后编写响应 下面是一个简单的例子Javascript 如何从node.js express操作处理程序执行延迟响应?,javascript,node.js,promise,Javascript,Node.js,Promise,使用(用于) 如何在回调后编写响应 下面是一个简单的例子posix.cat是一个函数,它返回一个承诺,up对结果执行一些操作,我想将其作为响应发送 require.paths.unshift('lib'); require('express'); var posix = require('posix'); get('/', function () { function up(s) { return s.toUpperCase(); } return po
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);
客户端从未得到响应
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
[object object].emitSuccess(node.js:283:15)
[对象]。(node.js:695:21)
[object object].emitSuccess(node.js:283:15)
node.js:552:29
node.js:1027:1
node.js:1031:1
根据,方法#2的问题是在设置状态代码之前调用了respond
这项工作:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.halt(200, s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
警告:此示例中引用的API现在已过时。