我是新来的Node.js,所以如果我的问题听起来有点愚蠢,我很抱歉。Node.js:我如何编写一个“异步”的获取器
这里是我走向:
我设计对象的其中一个属性必须通过数据库查询来设置。为了这个任务,我要求promise-mysql。为了将属性提供给其他对象,我希望有一个getter,用于检查属性是否设置的天气,后者在返回其值之前从数据库加载属性。
我迄今为止的做法:
MyObject = function()
{
this._property = null;
};
MyObject.prototype._loadProperty = function()
{
var self = this;
return pool.query('SELECT * FROM table WHERE condition = ?', [condition]).then(function(rows)
{
return self._property = rows;
}).catch(function(err)
{
console.log(err);
});
};
MyObject.prototype._getProperty = function()
{
return this._property || this._loadProperty();
}
到目前为止,如果属性尚未设置/加载但吸气返回一个承诺对象。我可以在调用函数中使用...... then()来处理这个承诺对象,但是我希望getter能够阻止返回值,直到承诺解决。这甚至有可能吗?
问候 格雷格
许多thx为您的解释(和重新抛出错误的建议)。我现在清楚地看到:没有办法让getter“保留”返回值,而是必须调整调用者。 – Greg