CNode

如何在构造函数中让Callback优雅一些?

问答
Llouis-sherren发布于11 年前最后回复11 年前9 回复5219 浏览0 收藏

我尝试使用Promise,但是发现构造函数中是不能这么做的,因为构造函数是通过new调用的,返回的是对象 而Promise是要求返回一个Promise对象的,有什么好办法可以在构造函数中比较好的调用callback呢?

查看回复

回复 (9)

T
think2011#1·11 年前

楼主举个例子行吗? 我也想知道。

I
i5ting#2·11 年前
引用 think2011楼主举个例子行吗? 我也想知道。

@think2011 此人对js的oo理解的不见得太好

楼主的想法很独特,我从来没有想过在构造函数里面使用异步,我也没有使用过构造函数。。。

我觉得你可以不使用new,用Object.create来创建对象,或者直接指定对象的__proto__

L
louis-sherren#4·11 年前
引用 think2011楼主举个例子行吗? 我也想知道。

@think2011

var Person = function(name, callback) {
    this.name = name;
	callback(args);
}

var person = new Person('xx', retrieveDataFromDatabase);

function retrieveDataFromDatabase() {
   //...
}

类似这种的

类似这种

L
louis-sherren#5·11 年前
引用 i5ting@think2011 此人对js的oo理解的不见得太好

@i5ting 嗯,JS的oo确实理解得不深入,求教。

A
alsotang#7·11 年前
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@waksana 没使用过构造函数? JS里这不叫构造函数吗?

@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) {
  //这样岂不是很好
});
W
wangyun122#9·11 年前

果断马克一下

参与回复
登录后即可参与回复。登录