Возможно ли перегрузить асинхронные обратные вызовы в GWT? - PullRequest
0 голосов
/ 29 октября 2010

У меня перегруженный метод запроса на стороне сервера.Я хотел знать, могу ли я перегрузить асинхронный обратный вызов, в зависимости от сигнатуры метода?Или рекомендуется определять два разных асинхронных ответа?Это два моих метода на сервере.

public String fetchInADay(String startTime, String endTime) {}

public String fetchInADay(String startTime, String endTime, String type) {}

В качестве комментария, пожалуйста:

Если мне потребуетсясделать два разных колбэка, разве это не противоречит принципам ОО?

Ответы [ 2 ]

1 голос
/ 29 октября 2010

В этой ситуации невозможно перегрузить асинхронный обратный вызов, поскольку методы onSuccess будут иметь одинаковую подпись.

Вы можете передать один и тот же объект AsyncCallback нескольким службам, но он не сможет сказать,какая служба или функция вызвали это.Если вы хотите различного поведения для разных вызовов службы, вам нужны два разных обратных вызова.

1 голос
/ 29 октября 2010

Я предполагаю, что вы планируете повторно использовать логику, реализованную в onSuccess(String result).Это прекрасно работает независимо от того, какой метод обслуживания вы вызываете.Вы даже можете использовать один и тот же экземпляр в нескольких вызовах.

Поскольку javascript является однопоточным, вы на безопасной стороне, поскольку ответы (onSuccess() вызов) нескольких асинхронных вызовов не будут мешать друг другу.Но из-за асинхронного характера этих вызовов порядок их обратных вызовов не будет гарантирован.

...