Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 表示作为promise的res.send大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我不明白发生了什么……

使用q promises,这有效:

const deferred = q.defer();
deferred.resolve('Hellow');

const myPromise = deferred.promise;

router.get('/items',(req,res) => {
    myPromise.then((result) => res.send(result));
});

但事实并非如此,如果请求永远不会结束,它会保持浏览器的状态:

router.get('/items',res) => {
    myPromise.then(res.send);
});

怎么了?

解决方法

下面是与res.send相关的快速库的片段:

res.send = function send(body) {
    var chunk = body;
    var encoding;
    var len;
    var req = this.req;
    var type;

    // setTings
    var app = this.app;

    // allow status / body
    if (arguments.length === 2) {
        // res.send(body,status) BACkWARDs compat
        if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') {
            deprecate('res.send(body,status): Use res.status(status).send(body) instead');
            this.statusCode = arguments[1];
        } else {
            deprecate('res.send(status,body): Use res.status(status).send(body) instead');
            this.statusCode = arguments[0];
            chunk = arguments[1];
        }
    }
 //.....

如您所见,有很多这样的参.在你的情况下,myPromise.then(res.send)这指的是promise对象,而不是res,这就是你的代码不起作用的原因.

您可以使用.bind方法更改上下文,因此这将引用res对象:

router.get('/items',res) => {
    myPromise.then(res.send.bind(res));
});

大佬总结

以上是大佬教程为你收集整理的node.js – 表示作为promise的res.send全部内容,希望文章能够帮你解决node.js – 表示作为promise的res.send所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。