大佬教程收集整理的这篇文章主要介绍了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 = 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,请注明来意。