在JavaScript中处理以下情况的最佳方法是什么。
我有三种方法(m1
,m2
,m3
),最后一种方法(m3
)取决于其他两种方法的结果({{1} },m1
)。
通过这种方式它可以工作,但我很想知道在这种情况下是否有更好的方法来编写代码,特别是对于将会读取代码的未来开发人员。
m2
答案 0 :(得分:1)
首先,我不确定,但将this.p = 0
放在O
内与O.p
结合使用是没有意义的。在引用实例时,您可能在this.p
内表示m3
。
无论如何,如果你正在寻找可读性,你可以制作一些简单但惯用的函数:http://jsfiddle.net/ZvprZ/1/。
var O = function () {
this.p = 0;
}
O.prototype.makesomething = function () {
var that = this;
var result = when( that.m1(), that.m2() )
.then( that.m3() );
return result;
}
O.prototype.m1 = function () {this.p++};
O.prototype.m2 = function () {this.p++};
O.prototype.m3 = function () {return this.p};
when
/ then
可能相当直接,因为除了使其更具可读性之外没有做任何事情:
(function(window) {
var when, then, o;
when = function() {
return o; // just return the object so that you can chain with .then,
// the functions have been executed already before executing
// .when
};
then = function(a) {
return a; // return the result of the first function, which has been
// executed already (the result is passed)
};
o = { when: when,
then: then };
window.when = when; // expose
window.then = then;
})(window);