2010-01-29 59 views
1

使用Express(對於node.js) 如何在回調後編寫響應?如何從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 
+1

警告:在這個例子中引用的API現在已過時。 – keturn 2010-09-28 00:25:36

回答

0

this,與方法#問題2這respond之前被稱爲狀態碼已設置。

這工作:

get('/2', function() { 
    var myRequest = this; 
    function up(s) { 
     myRequest.halt(200, s.toUpperCase()); 
    } 
    return posix.cat('/etc/motd').addCallback(up); 
});