Q promise のスコープはどのように機能しますか? 私の知る限り、「then」のコールバックは setTimeout のようにウィンドウによって呼び出されます。
この例では (それがどのように機能するかを理解するための単なる例です):
var getFileText = function() {
var deferred = Q.defer();
Server.readFile("foo.txt", "utf-8", function (error, text) {
if (error) {
deferred.reject(new Error(error));
} else {
deferred.resolve(text);
}
});
return deferred.promise;
};
var Foo = function () {
getFileText().then(this.showFile);
};
Foo.prototype.showFile = function(text) {
this.text = text;
console.log(text);
};
var foo = new Foo();
foo のインスタンスにテキストを含めるには、bind を使用しています。
var Foo = function () {
getFileText().then(this.showFile.bind(this));
};
他に方法はありますか?