我是node.js的新手,我正在尝试用bluebird包装节点 - 多方回调,但是multiparty的parse函数签名是函数(错误,字段,文件),promise签名只需要一个返回值。 我确定有办法做到这一点,但我还没有找到任何东西。
提前致谢!
答案 0 :(得分:2)
有同样的问题。不幸的是,victorkohl的解决方案对我来说不起作用,因为解析的回调传递2参数(字段和文件) 由
修正 var multiparty = Promise.promisifyAll(require('multiparty'), {multiArgs:true})
注意:{multiArgs:true}选项
答案 1 :(得分:1)
使用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);