【问题标题】:wrap node-multiparty with promisifyAll bluebird用 promisifyAll bluebird 包装 node-multiparty
【发布时间】:2016-02-18 03:18:26
【问题描述】:

我是 node.js 的新手,我正在尝试用 bluebird 包装节点多方回调,但多方的解析函数签名是 function(err, fields, files) 并且承诺签名只需要一个返回值。 我确定有办法做到这一点,但我还没有找到任何东西。

提前致谢!

【问题讨论】:

    标签: node.js bluebird


    【解决方案1】:

    遇到了同样的问题。不幸的是,由于 parse 的回调传递 2 参数(字段和文件),victorkohl 的解决方案对我不起作用 由

    修复
        var multiparty = Promise.promisifyAll(require('multiparty'), {multiArgs:true})
    

    注意:{multiArgs:true} 选项

    【讨论】:

    • 自 OP 以来有一个新的 API 以及几个版本的颠簸
    【解决方案2】:

    使用spread 代替then。取自他们自述文件中的示例:

    var Promise = require('bluebird');
    var multiparty = Promise.promisifyAll(require('multiparty'));
    var http = require('http');
    var util = require('util');
    
    http.createServer(function(req, res) {
      if (req.url === '/upload' && req.method === 'POST') {
        // parse a file upload
        var form = new multiparty.Form();
    
        // USE `spread` INSTEAD OF `then` HERE 
        form.parseAsync(req).spread(function(fields, files) {
          res.writeHead(200, {'content-type': 'text/plain'});
          res.write('received upload:\n\n');
          res.end(util.inspect({fields: fields, files: files}));
        });
    
        return;
      }
    }).listen(3000);
    

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2015-07-13
      • 2023-03-31
      相关资源
      最近更新 更多