Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从node.js express操作处理程序执行延迟响应?_Javascript_Node.js_Promise - Fatal编程技术网

Javascript 如何从node.js express操作处理程序执行延迟响应?

Javascript 如何从node.js express操作处理程序执行延迟响应?,javascript,node.js,promise,Javascript,Node.js,Promise,使用(用于) 如何在回调后编写响应 下面是一个简单的例子posix.cat是一个函数,它返回一个承诺,up对结果执行一些操作,我想将其作为响应发送 require.paths.unshift('lib'); require('express'); var posix = require('posix'); get('/', function () { function up(s) { return s.toUpperCase(); } return po

使用(用于) 如何在回调后编写响应

下面是一个简单的例子
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);
客户端从未得到响应

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
[object object].emitSuccess(node.js:283:15)
[对象]。(node.js:695:21)
[object object].emitSuccess(node.js:283:15)
node.js:552:29
node.js:1027:1
node.js:1031:1
根据,方法#2的问题是在设置状态代码之前调用了
respond

这项工作:

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

警告:此示例中引用的API现在已过时。