¿Cómo hago una respuesta diferida de un Node.js expresan gestor de acción?
-
23-09-2019 - |
Pregunta
Uso expreso (por Node.js ) ¿Cómo escribo una respuesta después de una devolución de llamada?
El siguiente es un ejemplo mínima. posix.cat
es una función que devuelve una promesa, up
hace algo con el resultado, y yo quiero que enviar como respuesta.
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);
El cliente nunca recibe una respuesta.
También he intentado variaciones en esto:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.respond(s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
pero que tiende a la caída de todo:
[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
Solución
De acuerdo con este , el problema con el enfoque # 2 que era respond
llamada antes de que se establece un código de estado.
Estos trabajos:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.halt(200, s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow