我是新來的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