Wie mache ich eine verzögerte Antwort von einem node.js Action-Handler express?
-
23-09-2019 - |
Frage
Mit Express (für node.js ) Wie schreibe ich eine Antwort nach einem Rückruf?
Im Folgenden ist ein minimales Beispiel. posix.cat
ist eine Funktion, kehrt ein Versprechen, up
etwas zum Ergebnis hat, und ich möchte, dass als Antwort senden.
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);
Der Kunde bekommt nie eine Antwort.
Ich habe auch Variationen dieser versucht:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.respond(s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
aber das neigt zu Absturz alles:
[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
Lösung
Nach diesen , das Problem mit dem Ansatz # 2, dass respond
war aufgerufen, bevor wurde ein Statuscode festgelegt.
Das funktioniert:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.halt(200, s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow