promise的用法
//定义promise, then函数的作用就是保存三个函数
const util = require('util');
const EventEmitter = require('events');
let Promise = function () {
EventEmitter.call(this);
}
util.inherits(Promise, EventEmitter)
Promise.prototype.then = function (fulfilldHandler, errorHandler, progressHandler) {
this.once('success', fulfilldHandler);
this.once('error', errorHandler);
this.on('progress', progressHandler)
return this;
}
//
let Deferred = function () {
this.status = 'unfulfilled';
this.promise = new Promise();
};
Deferred.prototype.resolve = function (obj) {
this.state = 'fulfilled';
this.Promise.emit('success', obj)
}
Deferred.prototype.reject = function (err) {
this.state = 'failed';
this.Promise.emit('error', err)
}
Deferred.prototype.progress = function (data) {
this.Promise.emit('progress', obj)
}
let promisify = function (res) {
let deferred = new Deferred();
let result = '';
res.on('data', function (chunk) {
result += chunk;
deferred.progress(chunk);
});
res.on('end', function () {
deferred.resolve(result);
});
res.on('error', function (err) {
deferred.reject(err);
});
return deferred.promise;
}