我有一个Javascript对象,需要2次调用外部服务器来构建其内容并执行任何有意义的操作.构建对象使得实例化它的实例将自动进行这两个调用.2个调用共享一个公共回调函数,该函数对返回的数据进行操作,然后调用另一个方法.问题是在两个方法都返回之前不应调用下一个方法.这是我目前实现的代码:
foo.bar.Object = function() {
this.currentCallbacks = 0;
this.expectedCallbacks = 2;
this.function1 = function() {
// do stuff
var me = this;
foo.bar.sendRequest(new RequestObject, function(resp) {
me.commonCallback(resp);
});
};
this.function2 = function() {
// do stuff
var me = this;
foo.bar.sendRequest(new RequestObject, function(resp) {
me.commonCallback(resp);
});
};
this.commonCallback = function(resp) {
this.currentCallbacks++;
// do stuff
if (this.currentCallbacks == this.expectedCallbacks) {
// call new method
}
};
this.function1();
this.function2();
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我强制对象在两个调用返回之后继续使用一个简单的计数器来验证它们都已返回.这可行,但似乎是一个非常差的实现.我现在只使用Javascript几周了,我想知道是否有更好的方法来做同样的事情,我还没有偶然发现.
感谢您的帮助.
所以我有一个问题让我在Subverion中感到很悲伤.我正在一个应该保持活动状态的分支中工作,直到我的功能集在重新集成之前完成开发.不幸的是,我已经完成的事情现在已被业务视为"关键任务",他们希望我从分支机构中挑选出这些功能并将其推入主干,以便QA可以接收它.
我遇到的问题是我在一个单独的目录中开发了这个功能,这个目录是我在完成其他工作时创建的.因此,为了合并我的功能所需的剩余代码,我首先需要提取我之前执行的目录创建.
以下是我需要进行的修改:
Rev 20
A ./project_foo
A ./project_foo/not_required_file.txt
Rev 24
A ./project_foo/required_file.txt
因此要将其放入后备箱,我必须执行以下操作:
svn merge -r20:21 - >这会得到我的目录以及not_required_file.txt
svn revert project_foo/not_required_file.txt - >摆脱我不想要的文件
svn merge -r24:25 - >这让我感动我需要的文件
当我完成开发并运行svn merge --reintegrate时,哪个工作并将这些内容放入了我想要的主干中,我(显然)没有从版本20中获取not_required_file.txt,因此遇到了树冲突(从我后来做的进一步改变).
所以我正在寻找关于在这些情况下该怎么做的一些指导.
谢谢.