ben bu gerçekten eski sorudur farkındayım ama başka bir şey için Aramalarımla birinde 2. sırada yer ve aşağıda bu bulur başkası yardımcı olabilir düşünüyorum.
Kısa bir süre önce benzer bir işlem yaptım, böylece bir Java uygulamasının, bir görevin tamamlanmasının ardından başarıya veya hataya farklı işlevler çağrılarak JavaScript'e geri dönmesi gerekiyor. Son zamanlardaki eğilimden de ötürü, ihtiyaçlarm, diğer işlevlere aktarılan parametreler olarak tanımlanan anonim işlevler çağırmaktı.
diğer yanıtlar belirtildiği gibi
applet.DoProcessing({
success: function(param) {
alert('Success: ' + param);
},
error: function(param) {
alert('Failed: ' + param);
}
});
Java sadece ismen JavaScript yöntemleri içine çağırabilirsiniz: Bu istemci tarafında javascript.
public void DoProcessing(final Object callbacks) {
//do processing....
JSObject w = JSObject.getWindow(this);
//Call our named callback, note how we pass the callbacks parameter straight
//back out again - it will be unchanged in javascript.
w.call("ProcessingCallback", new Object[]{successful, output, callbacks});
}
Sen tutunmak olabilir: Bu fonksiyon Java uygulaması içinde doğrudan denir
function ProcessingCallback(isSuccessful, cbParam, jsObject) {
if (isSuccessful && jsObject.success)
jsObject.success(cbParam);
else if (!isSuccessful && jsObject.error)
jsObject.error(cbParam);
}
: Bu gerekirse daha sonra da diğer yöntemlerle içine çağırabilir global geri arama yöntemi, gerektiği anlamına gelir Parametre nesnesinin referansı, eğer gerekliyse, atım yerine bir kayıtlı geri çağırma yöntemi olarak kullanmak istediğinizde süresiz olarak iletilir.
Örneğimizde, işlem zaman aldırıcı olabilir; başka bir iş parçacığı - cal lbacks hala da burada işe:
public void DoProcessing(final Object callbacks) {
//hold a reference for use in the thread
final Applet app = this;
//Create a new Thread object to run our request asynchronously
//so we can return back to single threaded javascript immediately
Thread async = new Thread() {
//Thread objects need a run method
public void run() {
//do processing....
JSObject w = JSObject.getWindow(app);
//Call our named callback, note how we pass the callbacks parameter
//straight back out again - it will be unchanged in javascript.
w.call("ProcessingCallback", new Object[]{successful, output, callbacks});
}
}
//start the thread
async.start();
}
Size sadece ismen Java fonksiyonlarını geçebilir görünüyor, bu nedenle yapmanız gereken yapardım uygulamasını örtecek ve işlev başvuruları alacağını hangi bir cephe nesnesi oluşturmak ve onlar için geçici isimlerle gel. – w00t