如何在构造函数中让Callback优雅一些?
我尝试使用Promise,但是发现构造函数中是不能这么做的,因为构造函数是通过new调用的,返回的是对象 而Promise是要求返回一个Promise对象的,有什么好办法可以在构造函数中比较好的调用callback呢?
9 回复
楼主举个例子行吗? 我也想知道。
@think2011 此人对js的oo理解的不见得太好
楼主的想法很独特,我从来没有想过在构造函数里面使用异步,我也没有使用过构造函数。。。
我觉得你可以不使用new,用Object.create来创建对象,或者直接指定对象的__proto__
var Person = function(name, callback) {
this.name = name;
callback(args);
}
var person = new Person('xx', retrieveDataFromDatabase);
function retrieveDataFromDatabase() {
//...
}
类似这种的
类似这种
@i5ting 嗯,JS的oo确实理解得不深入,求教。
var util = require('util');
var events = require("events");
// 定义时
var User = function (options) {
var self = this;
events.EventEmitter.call(this);
self.name = options.name;
self.age = options.age;
// do some async operation
setImmediate(function () {
self.emit('ready');
})
};
util.inherits(User, events.EventEmitter);
// 使用时
var alsotang = new User({name: 'alsotang', age: 3});
alsotang.on('ready', function () {
// do what you want
console.log('I am ready')
})
@louis-sherren 我的意思是我不用new这种方式来构造一个对象,因为没有什么必要。
你的问题让我又找到了一个不用new的理由,就是不支持异步。
var Persion = function(name, callback) {
var newPerson = {name: name};
httpRequest(function(age) {
newPerson.age = age;
callback(newPerson);
});
}
Person('xxx', functon(person) {
//这样岂不是很好
});
果断马克一下