test_that("can have multiple children", {
do <- async(function() {
d1 <- delay(1/1000)$share()
d2 <- d1$then(function(.) "foo")
d3 <- d1$then(function(.) "bar")
when_all(d2, d3)
})
expect_equal(synchronise(do()), list("foo", "bar"))
})
test_that("not cancelled at auto-cancellation", {
d1 <- d2 <- d3 <- NULL
do <- async(function() {
d1 <<- delay(1/1000)$share()
d2 <<- d1$then(function(.) delay(3))
d3 <<- d2$then(function(.) "foo")
d4 <- d3$then(function(.) "bar")
d5 <- d4$catch(error = function(.) "ok")
d6 <- d1$then(function(.) "bar")$then(function() { d4$cancel(); "ok2" })
when_all(d5, d6)
})
expect_equal(synchronise(do()), list("ok", "ok2"))
expect_false(get_private(d1)$cancelled)
expect_true(get_private(d3)$cancelled)
})
test_that("shared on an already fulfilled one", {
do <- function() {
d1 <- async_constant(42)$share()
d1$then(function(x) d1$then(function(.) x + 1))
}
expect_equal(synchronise(do()), 43)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.