Javascript 当回调函数接受多个参数时,如何提示函数

Javascript 当回调函数接受多个参数时,如何提示函数,javascript,promise,bluebird,Javascript,Promise,Bluebird,如果回调函数接受两个以上的参数,有没有办法提示函数?例如节点的fs.read,其中回调的三个参数是err、bytes和data。数据参数未传递给then函数,因此此日志记录未定义: var fs = require('fs'); var Promise = require('bluebird'); var open = Promise.promisify(fs.open); var read = Promise.promisify(fs.read); open('test.txt', 'r')

如果回调函数接受两个以上的参数,有没有办法提示函数?例如节点的fs.read,其中回调的三个参数是err、bytes和data。数据参数未传递给then函数,因此此日志记录未定义:

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);
    });
  });

我已经回答了我的问题-在promisify中使用multiArgs选项,然后使用spread而不是then:

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);
    });
  });

您使用的是哪种版本的蓝鸟?这很重要。