繁体   English   中英

如何使用Bluebird推广NodeJS Express

[英]How to promisify NodeJS Express with Bluebird

我在Express上使用NodeJS,并在Bluebird中使用了Promise。 我正在尝试使应用对象如下所示,但是一旦承诺的功能总会引发错误。 部分代码如下:

var express = require('express'),
    app = express(),
    bodyParser = require('body-parser'),
    Promise = require("bluebird");

    app.postAsync = Promise.promisify(app.post);

    app.postAsync('/api/v1/users/update').then(function(req, res, next) {
    // never gets here
    })
        .catch(function(err) {
            console.log("doh!!!"); 
        });

我试图以相同的效果promisifyAll。 为什么会失败,并且有什么方法可以保证发布/获取?

您确实真的不想这样做。 承诺是对此的错误抽象。

一个承诺代表一个最终操作的结果。 一个Promise只能更改一次状态因此即使您成功承诺了app.post的承诺,也只能一次为一个客户提供服务。

承诺是一个了不起的抽象-但这绝对不是承诺要解决的问题。 相反,如果您对带有承诺的有趣抽象感兴趣,则可以检查kriskowal(Q作者)的Q-IO或返回承诺以响应的承诺路由器之一,但是处理程序本身被多次调用。

我不能足够强调这一点-Promise是一个很棒的抽象,但是它们不能解决或尝试解决所有并发问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM