mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-13 17:08:05 -05:00
72 lines
2.6 KiB
R
72 lines
2.6 KiB
R
% Generated by roxygen2: do not edit by hand
|
|
% Please edit documentation in R/reactives.R
|
|
\name{reactivePoll}
|
|
\alias{reactivePoll}
|
|
\title{Reactive polling}
|
|
\usage{
|
|
reactivePoll(intervalMillis, session, checkFunc, valueFunc)
|
|
}
|
|
\arguments{
|
|
\item{intervalMillis}{Approximate number of milliseconds to wait between
|
|
calls to \code{checkFunc}. This can be either a numeric value, or a
|
|
function that returns a numeric value.}
|
|
|
|
\item{session}{The user session to associate this file reader with, or
|
|
\code{NULL} if none. If non-null, the reader will automatically stop when
|
|
the session ends.}
|
|
|
|
\item{checkFunc}{A relatively cheap function whose values over time will be
|
|
tested for equality; inequality indicates that the underlying value has
|
|
changed and needs to be invalidated and re-read using \code{valueFunc}. See
|
|
Details.}
|
|
|
|
\item{valueFunc}{A function that calculates the underlying value. See
|
|
Details.}
|
|
}
|
|
\value{
|
|
A reactive expression that returns the result of \code{valueFunc},
|
|
and invalidates when \code{checkFunc} changes.
|
|
}
|
|
\description{
|
|
Used to create a reactive data source, which works by periodically polling a
|
|
non-reactive data source.
|
|
}
|
|
\details{
|
|
\code{reactivePoll} works by pairing a relatively cheap "check" function with
|
|
a more expensive value retrieval function. The check function will be
|
|
executed periodically and should always return a consistent value until the
|
|
data changes. When the check function returns a different value, then the
|
|
value retrieval function will be used to re-populate the data.
|
|
|
|
Note that the check function doesn't return \code{TRUE} or \code{FALSE} to
|
|
indicate whether the underlying data has changed. Rather, the check function
|
|
indicates change by returning a different value from the previous time it was
|
|
called.
|
|
|
|
For example, \code{reactivePoll} is used to implement
|
|
\code{reactiveFileReader} by pairing a check function that simply returns the
|
|
last modified timestamp of a file, and a value retrieval function that
|
|
actually reads the contents of the file.
|
|
|
|
As another example, one might read a relational database table reactively by
|
|
using a check function that does \code{SELECT MAX(timestamp) FROM table} and
|
|
a value retrieval function that does \code{SELECT * FROM table}.
|
|
|
|
The \code{intervalMillis}, \code{checkFunc}, and \code{valueFunc} functions
|
|
will be executed in a reactive context; therefore, they may read reactive
|
|
values and reactive expressions.
|
|
}
|
|
\examples{
|
|
# Assume the existence of readTimestamp and readValue functions
|
|
function(input, output, session) {
|
|
data <- reactivePoll(1000, session, readTimestamp, readValue)
|
|
output$dataTable <- renderTable({
|
|
data()
|
|
})
|
|
}
|
|
}
|
|
\seealso{
|
|
\code{\link{reactiveFileReader}}
|
|
}
|
|
|