bluebird v3.x promisify changes
API
v2
const Promise = require('bluebird');
const Browserify = require('browserify');
// promisify bundle() of browserify
Browserify.prototype.bundleAsync = Promise.promisify(Browserify.prototype.bundle, Browserify.prototype);
v3
const Promise = require('bluebird');
const Browserify = require('browserify');
// promisify bundle() of browserify
Browserify.prototype.bundleAsync = Promise.promisify(Browserify.prototype.bundle, { ctx: Browserify.prototype });
其他
doc: http://bluebirdjs.com/docs/api/promise.promisify.html
- ctx 指运行时的上下文
- multiArgs = false, 使用 callback 的第一个success参数进行 fulfill, 像
request
库, 第一个参数为 err, 第二 & 第三个参数为success value. 这样 fullfill 的时候会是一个数组.
request('https://cnodejs.org', function(err, res, body){
})
request.getAsync = Promise.promisify(request.get, { multiArgs: true });
co(function* (){
const successVal = yield request.getAsync('https://cnodejs.org');
const res = successVal[0];
const body = successVal[1];
})