我有一个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几周了,我想知道是否有更好的方法来做同样的事情,我还没有偶然发现.
感谢您的帮助.
有效的Java说:
内存泄漏的第三个常见来源是侦听器和其他回调.如果您实现客户端注册回调但未明确注销回调的API,则除非您采取某些操作,否则它们将累积.确保回调被及时垃圾回收的最佳方法是仅存储对它们的弱引用,例如,通过仅将它们存储为WeakHashMap中的键.
我是Java的初学者.有人可以教我如何在回调中创建弱引用并告诉我它们如何解决内存泄漏问题?谢谢.
我想运行回调after_post_process但它似乎不适用于使用Paperclip 2.3.8的Rails 3.0.1.它给出了一个错误:
undefined method `_post_process_callbacks' for #<Class:0x102d55ea0>
Run Code Online (Sandbox Code Playgroud)
我想在文件上传后调用Panda API.我会为此创建自己的处理器,但是当Panda处理处理时,它也可以上传文件,并将自己排队一段不确定的持续时间我认为回调会很好.但回调似乎在Rails3中不起作用.
after_post_process :panda_create
def panda_create
video = Panda::Video.create(:source_url => mp3.url.gsub(/[?]\d*/,''), :profiles => "f4475446032025d7216226ad8987f8e9", :path_format => "blah/1234")
end
Run Code Online (Sandbox Code Playgroud)
我在我的模型中试过要求并包含回形针,但似乎并不重要.
有任何想法吗?
我有这个JQuery代码:
$("p.exclamation, div#notification_box").live("mouseover", function() {
});
Run Code Online (Sandbox Code Playgroud)
我想从jQuery代码中调用这个rails方法作为回调:
def render_read
self.user_notifications.where(:read => false).each do |n|
n.read = true
n.save
end
end
Run Code Online (Sandbox Code Playgroud)
此方法在我的用户模型中.有没有办法做到这一点?
我有基类Foo与方法垃圾邮件和类Bar,它覆盖垃圾邮件.我需要在一些就地定义的回调对象的方法中调用基类的垃圾邮件:
public class Foo {
public void spam() {
// ...
}
}
public class Bar extends Foo {
@Override
public void spam() {
objectWhichRequireCallback(new Callback {
@Override
public void onCallback() {
super.spam();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
此代码无效,因为super与Callback相关,而不是Bar类.是否可以从就地定义的对象调用super方法?
我正在尝试创建一个返回带有回调信息的对象的函数:
var geoloc;
var successful = function (position) {
geoloc = {
longitude: position.coords.longitude,
latitude: position.coords.latitude
};
};
var getLocation = function () {
navigator.geolocation.getCurrentPosition(successful, function () {
alert("fail");
});
return geoloc;
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?该函数getLocation在successful执行之前返回null值.
谢谢!
有没有办法告诉Cython编译器param是函数.就像是
cpdef float calc_class_re(list data, func callback)
Run Code Online (Sandbox Code Playgroud) 我有一个C++方法(使用Visual Studio,如果它有帮助)调用cmd,如下所示:
start \B example.exe arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
问题是此调用会打开一个(cmd)窗口.如果我打开了另一个cmd,\ B可以工作,但如果没有,它会打开一个新窗口.
我也试过没有开始\ B但它是一样的....
我想避免这个新窗口,但我不知道如何.任何的想法?
请考虑以下示例:
function myTest(&$var)
{
$var++;
echo "var = {$var}\n";
}
$x = 42;
call_user_func('myTest', $x);
Run Code Online (Sandbox Code Playgroud)
它显示警告:
警告:参数1到myTest()应该是一个引用,在/home/alain/workspace/echo/echo.php(57)中给出的值:第7行的eval()代码
注意:代码写在在线沙箱上,解释了eval.
知道如何传递对call_user_func家庭功能的参考吗?
我无法理解在SQLite3数据库中使用回调函数.
据我所知,它用于遍历具有多个记录的SELECT语句.但我不明白它是如何做到这一点或如何使我自己有用的回调.我已经多次阅读 TutorialsPoint以尝试理解,但这不是为我做的.
当我在Visual Studio中使用他们的示例和调试来查看如何填充和遍历参数数组时,我迷路了.VS也只显示数组中的当前插槽,而不是整个数组本身.
如果您需要任何澄清,请告诉我,因为我在这里学习!
我要求有人解释如何使用回调.也许是其他人如何使用它的一些例子.只是解释这个人甚至在做什么:
static int callback(void *data, int argc, char **argv, char **azColName){
int i;
fprintf(stderr, "%s: ", (const char*)data);
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud) callback ×10
asynchronous ×2
java ×2
javascript ×2
amazon-s3 ×1
c++ ×1
cmd ×1
command-line ×1
cython ×1
jquery ×1
overriding ×1
paperclip ×1
php ×1
python ×1
reference ×1
ruby ×1
sqlite ×1
super ×1
synchronous ×1
wait ×1
windows ×1