Действовать на флажок, проверяемый или непроверенный по щелчку.
<input type="checkbox" id="customCheck1">
$('#customCheck1').click(function () {
if (this.checked == true) {
console.log('checked');
}
else {
console.log('un-checked');
}
});
Интерфейс IAsyncCallback
не существует, поэтому вы не можете его реализовать.
Я подозреваю, что вы действительно хотите узнать об интерфейсе IAsyncResult
.
Я рекомендую вам прочитать эту страницу в MSDN.
Интерфейс IAsyncResult
представляет собой операцию (например, веб-запрос или базу данных call), который выполняется в фоновом режиме, в то время как ваш код продолжает выполняться. Он может сказать вам, завершилась ли операция (свойство IsCompleted
). Он также дает вам объект WaitHandle
(свойство AsyncWaitHandle
), который можно использовать для ожидания завершения операции. (Вызывая result.AsyncWaitHandle. WaitOne ()
)
Вы получите IAsyncResult
, вызвав метод Begin
Whatever
. ( BeginExecuteReader
, BeginGetResponse
и многие другие). Метод Begin
Whatever
будет принимать любые параметры, необходимые для операции (например, BeginExecuteReader
может принимать параметр CommandBehavior
) и может принимать AsyncCallback делегат (не интерфейс) и параметр состояния. In возвращает объект IAsyncResult
.
Делегат AsyncCallback - это предоставленный вами метод, который будет вызываться по завершении операции. Обычно он вызывается в другом потоке, поэтому будьте осторожны с ним. Вашему методу AsyncCallback будет предоставлен тот же IAsyncResult, что и метод Begin
Whatever
, который был предоставлен вам ранее. Параметр состояния помещается в IAsyncResult и игнорируется системой; вы можете использовать его в своем методе AsyncCallback, чтобы отслеживать, для чего выполнялась операция. (Состояние может быть любым, в том числе null
)
Внутри вашего AsyncCallback (или где-то еще) вы можете вызвать метод End
Whatever
, который соответствует Begin
Независимо от
метода, который вы вызвали в первую очередь. Вы должны передать ему IAsyncResult из Begin
Anything
или из AsyncCallback. Когда вы его вызываете, он будет ждать завершения операции (если она еще не завершена), а затем вернет вам результат операции. (Предположим, что операция что-то возвращает; например, WebRequest.EndGetResponse
вернет WebResponse
). Если во время операции возникнет какая-либо ошибка, End
Whatever
вызовет исключение.
Вы должны реализовать IAsyncResult, если хотите создать свою собственную операцию, которая может выполняться в фоновом режиме. Вы также должны создать методы Begin
Whatever
и End
Whatever
, которые возвращают и принимают его, соответственно. Для получения дополнительной информации о реализации IAsyncResult см. здесь .
С синхронный обратный вызов вызывающий метод (или поток) должен дождаться завершения вызываемого метода, прежде чем он сможет продолжить обработку - во многом аналогично вызову «обычного» метода.
С помощью асинхронного обратного вызова вызывающий метод (или поток) может продолжить обработку других входных данных, событий или чего-либо еще, не дожидаясь завершения вызываемого метода.
Для потока пользовательского интерфейса приложения, если вы не хотите, чтобы он «зависал», пока приложение выполняет какой-то длительный процесс, вам необходимо использовать асинхронные обратные вызовы.
Обратный вызов - это не что иное, как делегат. Термин обратный вызов используется потому, что вы обычно передаете его (делегата) в метод (в качестве аргумента), а затем вызываете его в этом методе, чтобы что-то сигнализировать.
Таковы обратные вызовы Sync и Async. Синхронно, выполняется в том же потоке, который вызвал метод (запустил действие). Асинхронные процессы обычно выполняются в другом потоке (но не всегда)
. Интерфейс IAsyncCallback - это шаблон для запуска асинхронной задачи. Вы передаете обратный вызов (делегат), который вызывается после завершения работы. Существует свойство, позволяющее определить, выполняется ли метод синхронно.