非同期的に値をフェッチし、新しい EcmaScript 5 ゲッターを使用してそれを返す読み取り専用オブジェクト プロパティを定義したいと考えています。
ただし、以下のコード例では決して未定義ではありませんがundefined
、プロパティは常に返されます。magicValue
また、return 'xxx';
印刷された値だけが静止しているときundefined
。return
コールバック関数の外にいる場合にのみ機能します。
のコールバックが呼び出されたreturn
かどうかに関係なく、すぐに実行されているようです。myAsyncFunction
これが V8 のバグなのか、JavaScript のゲッターを悪用しているのかはわかりません。
これを機能させることはできますか?ゲッターとセッターを使用できるようになったので、ゲッター/セッターを使用してプロパティと通常の関数を読み書きし、特定のタスクを実行すると思いました。
var User = function (id) {
this.id = id;
};
Object.defineProperty(User.prototype, 'magic', {
get : function () {
myAsyncFunction(function (magicValue) {
return magicValue;
});
}
});
var u = new User(5);
console.log(u.magic);
印刷しundefined
ます。