final class CallbackTo[A] extends AnyVal
A function to be executed later, usually by scalajs-react in response to some kind of event.
The purpose of this class is to lift effects into the type system, and use the compiler to ensure safety around callbacks (without depending on an external library like Scalaz).
() => Unit is replaced by Callback.
Similarly, ReactEvent => Unit is replaced by ReactEvent => Callback.
- A
The type of result produced when the callback is invoked.
- Self Type
- CallbackTo[A]
- Since
0.10.0
- Alphabetic
- By Inheritance
- CallbackTo
- AnyVal
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
def
!(implicit ev: <:<[CallbackTo[A], CallbackTo[Boolean]]): CallbackTo[Boolean]
Negates the callback result (so long as it's boolean).
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- Any
-
final
def
##(): Int
- Definition Classes
- Any
-
def
&&(b: CallbackTo[Boolean])(implicit ev: <:<[CallbackTo[A], CallbackTo[Boolean]]): CallbackTo[Boolean]
Creates a new callback that returns
truewhen both this and the given callback returntrue. -
def
*>[B](runNext: CallbackTo[B]): CallbackTo[B]
Alias for
>>.Alias for
>>.Where
>>is often associated with Monads,*>is often associated with Applicatives.- Annotations
- @inline()
-
def
<*[B](next: CallbackTo[B]): CallbackTo[A]
Sequence actions, discarding the value of the second argument.
-
def
<<[B](runBefore: CallbackTo[B]): CallbackTo[A]
Sequence a callback to run before this, discarding any value produced by it.
Sequence a callback to run before this, discarding any value produced by it.
- Annotations
- @inline()
-
def
<<?[B](prev: Option[CallbackTo[B]]): CallbackTo[A]
Convenient version of
<<that accepts an Option -
def
<|(t: (A) ⇒ Any): CallbackTo[A]
Alias for
tap.Alias for
tap.- Annotations
- @inline()
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- Any
-
def
>>[B](runNext: CallbackTo[B]): CallbackTo[B]
Sequence a callback to run after this, discarding any value produced by this.
-
def
>>=[B](f: (A) ⇒ CallbackTo[B]): CallbackTo[B]
Alias for
flatMap.Alias for
flatMap.- Annotations
- @inline()
-
def
asAsyncCallback: AsyncCallback[A]
Turns this into an AsyncCallback that runs whenever/wherever it's called;
setTimeoutisn't used.Turns this into an AsyncCallback that runs whenever/wherever it's called;
setTimeoutisn't used.In order words,
this.toAsyncCallback.toCallback==this. - def asCBO[B](implicit ev: <:<[CallbackTo[A], CallbackTo[Option[B]]]): CallbackOption[B]
-
def
asEventDefault(e: react.ReactEvent): CallbackTo[Option[A]]
Wraps this so that:
Wraps this so that:
1) It only executes if
e.defaultPreventedisfalse. 2) It setse.preventDefaulton successful completion. -
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asKleisli[B, C](implicit ev: <:<[CallbackTo[A], CallbackTo[(B) ⇒ C]]): CallbackKleisli[B, C]
-
def
async: AsyncCallback[A]
Schedules this to run asynchronously (i.e.
Schedules this to run asynchronously (i.e. uses a
setTimeout).Exceptions will be handled by the AsyncCallback such that
this.async.toCallbackwill never throw an exception. -
def
attempt: CallbackTo[Either[Throwable, A]]
Wraps this callback in a try-catch and returns either the result or the exception if one occurs.
- def attemptTry: CallbackTo[Try[A]]
- def debounce(delay: FiniteDuration): Callback
- def debounce(delay: Duration): Callback
- def debounceMs(delayMs: Long): Callback
-
def
delay(startIn: Duration): AsyncCallback[A]
Run asynchronously after a delay of a given duration.
-
def
delay(startIn: FiniteDuration): AsyncCallback[A]
Run asynchronously after a delay of a given duration.
-
def
delayMs(startInMilliseconds: Double): AsyncCallback[A]
Run asynchronously after a
startInMillisecondsms delay. -
def
distFn[B, C](implicit ev: <:<[CallbackTo[A], CallbackTo[(B) ⇒ C]]): (B) ⇒ CallbackTo[C]
Function distribution.
Function distribution. See
CallbackTo.liftTraverse(f).idfor the dual. -
def
finallyRun[B](runFinally: CallbackTo[B]): CallbackTo[A]
Wraps this callback in a
try-finallyblock and runs the given callback in thefinallyclause, after the current callback completes, be it in error or success. - def flatMap[B](f: (A) ⇒ CallbackTo[B]): CallbackTo[B]
- def flatMap2[X, Y, Z](f: (X, Y) ⇒ CallbackTo[Z])(implicit ev: <:<[A, (X, Y)]): CallbackTo[Z]
- def flatTap[B](t: (A) ⇒ CallbackTo[B]): CallbackTo[A]
- def flatten[B](implicit ev: (A) ⇒ CallbackTo[B]): CallbackTo[B]
-
def
getClass(): Class[_ <: AnyVal]
- Definition Classes
- AnyVal → Any
- def handleError(f: (Throwable) ⇒ CallbackTo[A]): CallbackTo[A]
- def isEmpty_?: Boolean
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
logAround(message: Any, optionalParams: Any*): CallbackTo[A]
Log to the console before this callback starts, and after it completes.
Log to the console before this callback starts, and after it completes.
Does not change the result.
-
def
logDuration: CallbackTo[A]
Log the duration of this callback's execution.
-
def
logDuration(name: String): CallbackTo[A]
Log the duration of this callback's execution.
Log the duration of this callback's execution.
- name
Prefix to appear the log output.
-
def
logDuration(fmt: (FiniteDuration) ⇒ String): CallbackTo[A]
Log the duration of this callback's execution.
-
def
logResult: CallbackTo[A]
Logs the result of this callback as it completes.
-
def
logResult(name: String): CallbackTo[A]
Logs the result of this callback as it completes.
Logs the result of this callback as it completes.
- name
Prefix to appear the log output.
-
def
logResult(msg: (A) ⇒ String): CallbackTo[A]
Logs the result of this callback as it completes.
- def map[B](f: (A) ⇒ B)(implicit ev: MapGuard[B]): CallbackTo[Out]
- def maybeHandleError(f: PartialFunction[Throwable, CallbackTo[A]]): CallbackTo[A]
-
def
memo(): CallbackTo[A]
Return a version of this callback that will only execute once, and reuse the result for all other invocations.
-
def
precedeWith(runFirst: ⇒ Unit): CallbackTo[A]
Convenience-method to run additional code before this callback.
-
def
rateLimit(window: FiniteDuration, maxPerWindow: Int): CallbackTo[Option[A]]
Limits the number of invocations in a given amount of time.
Limits the number of invocations in a given amount of time.
- returns
Some if invocation was allowed, None if rejected/rate-limited
-
def
rateLimit(window: Duration, maxPerWindow: Int): CallbackTo[Option[A]]
Limits the number of invocations in a given amount of time.
Limits the number of invocations in a given amount of time.
- returns
Some if invocation was allowed, None if rejected/rate-limited
-
def
rateLimit(window: FiniteDuration): CallbackTo[Option[A]]
Limits the number of invocations in a given amount of time.
Limits the number of invocations in a given amount of time.
- returns
Some if invocation was allowed, None if rejected/rate-limited
-
def
rateLimit(window: Duration): CallbackTo[Option[A]]
Limits the number of invocations in a given amount of time.
Limits the number of invocations in a given amount of time.
- returns
Some if invocation was allowed, None if rejected/rate-limited
-
def
rateLimitMs(windowMs: Long, maxPerWindow: Int = 1): CallbackTo[Option[A]]
Limits the number of invocations in a given amount of time.
Limits the number of invocations in a given amount of time.
- returns
Some if invocation was allowed, None if rejected/rate-limited
-
def
requireCBO(implicit ev: <:<[CallbackTo[A], CallbackTo[Boolean]]): CallbackOption[Unit]
Returns a CallbackOption that requires the boolean value therein to be true.
-
def
ret[B](b: B): CallbackTo[B]
Discard the callback's return value, return a given value instead.
Discard the callback's return value, return a given value instead.
ret, short forreturn. -
def
runNow(): A
Executes this callback, on the current thread, right now, blocking until complete.
Executes this callback, on the current thread, right now, blocking until complete. Exceptions will not be thrown, not caught. Use CallbackTo#attempt to catch exceptions.
Typically, callbacks are passed to scalajs-react and you're expected not to call this method yourself. Generally speaking, the only time you should call this method is in some other non-React code's async callback. Inside an AJAX callback is a common example. Even for those cases though, you can avoid calling this by getting direct access instead of callback-based access to your component; see the online WebSockets example: https://japgolly.github.io/scalajs-react/#examples/websockets
While it's technically safe to call CallbackTo#runNow inside the body of another Callback, it's better to just use combinators like CallbackTo#flatMap or even a Scala for-comprehension.
- Annotations
- @inline()
-
def
setInterval(interval: FiniteDuration): CallbackTo[SetIntervalResult]
Schedule for repeated execution every
interval. -
def
setInterval(interval: Duration): CallbackTo[SetIntervalResult]
Schedule for repeated execution every
interval. -
def
setIntervalMs(interval: Double): CallbackTo[SetIntervalResult]
Schedule this callback for repeated execution every
intervalmilliseconds.Schedule this callback for repeated execution every
intervalmilliseconds.- interval
duration in milliseconds between executions
- returns
A means to cancel the interval.
-
def
setTimeout(interval: FiniteDuration): CallbackTo[SetTimeoutResult]
Schedule this callback for execution in
interval.Schedule this callback for execution in
interval.Note: in most cases delay() is a better alternative.
- returns
A means to cancel the timeout.
-
def
setTimeout(interval: Duration): CallbackTo[SetTimeoutResult]
Schedule this callback for execution in
interval.Schedule this callback for execution in
interval.Note: in most cases delay() is a better alternative.
- returns
A means to cancel the timeout.
-
def
setTimeoutMs(interval: Double): CallbackTo[SetTimeoutResult]
Schedule this callback for execution in
intervalmilliseconds.Schedule this callback for execution in
intervalmilliseconds.Note: in most cases delayMs() is a better alternative.
- interval
duration in milliseconds to wait
- returns
A means to cancel the timeout.
-
def
tap(t: (A) ⇒ Any): CallbackTo[A]
When the callback result becomes available, perform a given side-effect with it.
-
def
thenRun[B](runNext: ⇒ B)(implicit ev: MapGuard[B]): CallbackTo[Out]
Convenience-method to run additional code after this callback.
- def toCBO: CallbackOption[A]
- def toJsCallback: UndefOr[Function0[A]]
- def toJsFn: Function0[A]
- def toJsFn1: Function1[Any, A]
- def toKleisli[B]: CallbackKleisli[B, A]
-
def
toScalaFn: () ⇒ A
- Annotations
- @inline()
-
def
toString(): String
- Definition Classes
- Any
-
def
underlyingRepr: Trampoline[A]
The underlying representation of this value-class
-
def
unless(cond: ⇒ Boolean): CallbackTo[Option[A]]
Conditional execution of this callback.
Conditional execution of this callback. Reverse of when().
- cond
The condition required to be
falsefor this callback to execute.- returns
Someresult of the callback executed, elseNone.
-
def
unless_(cond: ⇒ Boolean): Callback
Conditional execution of this callback.
Conditional execution of this callback. Discards the result. Reverse of when_().
- cond
The condition required to be
falsefor the callback to execute.
-
def
void: Callback
Discard the value produced by this callback.
-
def
voidExplicit[B](implicit ev: <:<[A, B]): Callback
Discard the value produced by this callback.
Discard the value produced by this callback.
This method allows you to be explicit about the type you're discarding (which may change in future).
- Annotations
- @inline()
-
def
when(cond: ⇒ Boolean): CallbackTo[Option[A]]
Conditional execution of this callback.
Conditional execution of this callback.
- cond
The condition required to be
truefor this callback to execute.- returns
Someresult of the callback executed, elseNone.
-
def
when_(cond: ⇒ Boolean): Callback
Conditional execution of this callback.
Conditional execution of this callback. Discards the result.
- cond
The condition required to be
truefor this callback to execute.
- def widen[B >: A]: CallbackTo[B]
-
def
withDuration[B](f: (A, FiniteDuration) ⇒ CallbackTo[B]): CallbackTo[B]
Record the duration of this callback's execution.
- def zip[B](cb: CallbackTo[B]): CallbackTo[(A, B)]
- def zipWith[B, C](cb: CallbackTo[B])(f: (A, B) ⇒ C): CallbackTo[C]
-
def
|>[B](f: (A) ⇒ B)(implicit ev: MapGuard[B]): CallbackTo[Out]
Alias for
map.Alias for
map.- Annotations
- @inline()
-
def
||(b: CallbackTo[Boolean])(implicit ev: <:<[CallbackTo[A], CallbackTo[Boolean]]): CallbackTo[Boolean]
Creates a new callback that returns
truewhen either this or the given callback returntrue.