为什么第一种承诺方法有效而不是第二种方法?
Why does the first method of promisifying work and not the second one?
这是
的后续问题
方法 1 有效;
var Converter = require('csvtojson').Converter;
Promise.promisifyAll(Converter.prototype);
var converter = new Converter();
方法二不行;
var Converter = require('csvtojson').Converter;
var converter = Promise.promisifyAll(Converter.prototype);
为什么方法 1 有效而方法 2 无效?
重新检查文档https://www.npmjs.com/package/csvtojson,Convertor
是一个构造函数。它必须与前面的 new
一起使用。
Promise.promisifyAll(obj)
returns obj
, 因此...
Promise.promisifyAll(Converter.prototype)
... returns Converter.prototype
,而不是 Converter
因此 ...
var converter = Promise.promisifyAll(Converter.prototype);
... 会将 Converter.prototype
分配给 converter
.
为了 promisify 原型并分配 Converter
的实例,你应该(实际地)写两个语句(即方法 1):
Promise.promisifyAll(Converter.prototype);
var converter = new Converter();
你可以写单行...
var converter = new (Promise.promisifyAll(Converter.prototype).constructor);
...虽然它的可读性较差。
这是
方法 1 有效;
var Converter = require('csvtojson').Converter;
Promise.promisifyAll(Converter.prototype);
var converter = new Converter();
方法二不行;
var Converter = require('csvtojson').Converter;
var converter = Promise.promisifyAll(Converter.prototype);
为什么方法 1 有效而方法 2 无效?
重新检查文档https://www.npmjs.com/package/csvtojson,Convertor
是一个构造函数。它必须与前面的 new
一起使用。
Promise.promisifyAll(obj)
returns obj
, 因此...
Promise.promisifyAll(Converter.prototype)
... returns Converter.prototype
,而不是 Converter
因此 ...
var converter = Promise.promisifyAll(Converter.prototype);
... 会将 Converter.prototype
分配给 converter
.
为了 promisify 原型并分配 Converter
的实例,你应该(实际地)写两个语句(即方法 1):
Promise.promisifyAll(Converter.prototype);
var converter = new Converter();
你可以写单行...
var converter = new (Promise.promisifyAll(Converter.prototype).constructor);
...虽然它的可读性较差。