以下のプログラム構造を意図したとおりに動作させる方法について少し質問があります。
コンソールが正しい順序で数字を出力するように実行したい。現在実行すると、コンソールが 1 2 3 ではなく 1 3 2 でログアウトするような方法でメソッドが実行されるように実行されます。
これは、javascript が関数呼び出しを処理する方法の誤解によるものだと推測しています。
コーヒー:
class exports.Class
constructor: (@options) ->
onEdit: =>
@secondFunction()
console.log "3"
secondFunction: =>
console.log "1"
@externalClass.getData( (callback) =>
console.log "2"
)
JS:
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
exports.Class = (function() {
function Class(options) {
this.options = options;
this.secondFunction = __bind(this.secondFunction, this);
this.onEdit = __bind(this.onEdit, this);
}
Class.prototype.onEdit = function() {
this.secondFunction();
return console.log("3");
};
Class.prototype.secondFunction = function() {
var _this = this;
console.log("1");
return this.externalClass.getData(function(callback) {
return console.log("2");
});
};
return Class;
})();