Comment puis-je faire une réponse différée d'un gestionnaire d'action express Node.js?
-
23-09-2019 - |
Question
Utilisation Exprimez-(pour Node.js ) Comment puis-je écrire une réponse après un rappel?
Ce qui suit est un exemple minimal. posix.cat
est une fonction qui renvoie une promesse, up
fait quelque chose au résultat, et je veux l'envoyer comme réponse.
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);
Le client obtient jamais une réponse.
J'ai aussi essayé des variations sur ceci:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.respond(s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
mais qui tend à tout bloquer:
[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
La solution
Selon cette , le problème avec l'approche # 2 qui était respond
appelé avant un code d'état a été défini.
Cela fonctionne:
get('/2', function () {
var myRequest = this;
function up(s) {
myRequest.halt(200, s.toUpperCase());
}
return posix.cat('/etc/motd').addCallback(up);
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow