Come faccio a fare una risposta differita da un gestore di azione node.js espresso?
-
23-09-2019 - |
Domanda
express (per node.js ) Come faccio a scrivere una risposta dopo una richiamata?
Il seguente è un esempio minimo. posix.cat
è una funzione che restituisce una promessa, up
fa qualcosa al risultato, e voglio inviare che come risposta.
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);
Il cliente non ottiene mai una risposta.
Ho anche provato variazioni su questo:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.respond(s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
, ma che tende a bloccarsi tutto:
[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
Soluzione
questo , il problema con l'approccio # 2 che era respond
chiamato prima un codice di stato è stato impostato.
Questo funziona:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.halt(200, s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow