【发布时间】:2016-02-18 03:18:26
【问题描述】:
我是 node.js 的新手,我正在尝试用 bluebird 包装节点多方回调,但多方的解析函数签名是 function(err, fields, files) 并且承诺签名只需要一个返回值。 我确定有办法做到这一点,但我还没有找到任何东西。
提前致谢!
【问题讨论】:
我是 node.js 的新手,我正在尝试用 bluebird 包装节点多方回调,但多方的解析函数签名是 function(err, fields, files) 并且承诺签名只需要一个返回值。 我确定有办法做到这一点,但我还没有找到任何东西。
提前致谢!
【问题讨论】:
遇到了同样的问题。不幸的是,由于 parse 的回调传递 2 参数(字段和文件),victorkohl 的解决方案对我不起作用 由
修复 var multiparty = Promise.promisifyAll(require('multiparty'), {multiArgs:true})
注意:{multiArgs:true} 选项
【讨论】:
使用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);
【讨论】: