有没有办法在函数中使用多于两个参数的函数?一个例子是node的fs.read,其中回调的三个参数是err,bytes和data。 data参数不会传递给then函数,因此记录undefined:
var fs = require('fs');
var Promise = require('bluebird');
var open = Promise.promisify(fs.open);
var read = Promise.promisify(fs.read);
open('test.txt', 'r')
.then(function(fd) {
var buffer = new Buffer(1024);
read(fd, buffer, 0, buffer.length, null).then(function(bytes, data) {
console.log(data);
});
});
答案 0 :(得分:11)
我已经回答了我的问题 - 在promisify中使用multiArgs选项,然后使用spread而不是:
var fs = require('fs');
var Promise = require('bluebird');
var open = Promise.promisify(fs.open);
var read = Promise.promisify(fs.read, {multiArgs:true});
open('test.txt', 'r')
.then(function(fd) {
var buffer = new Buffer(1024);
read(fd, buffer, 0, buffer.length, null).spread(function(bytes, data) {
console.log(data);
});
});