1

Expressの使用( node.js用) コールバックの後に応答を記述するにはどうすればよいですか?

以下は最小限の例です。 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);

クライアントは応答を受け取りません。

私はこれのバリエーションも試しました:

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
4

1 に答える 1

0

これによるとrespond、ステータスコードが設定される前に呼び出されたアプローチ#2の問題。

これは機能します:

get('/2', function () {
    var myRequest = this;
    function up(s) {
        myRequest.halt(200, s.toUpperCase());
    }
    return posix.cat('/etc/motd').addCallback(up);
});
于 2010-01-29T06:33:09.080 に答える