Skip to content

AndrewTsao/luvit-future

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

luvit-future

Luvit port of Dart Future

Follow lua exception pattern, our Future always has an ok flag plus a value. if future failed, then the then callback called with false plus string with error message, otherwise true plus value.

Example

local Future = require("future").Future
local Completer = require("future").Completer
local wait = require("future").wait

local timer = require("timer")

local function getTimeoutFuture()
  local completer = Completer:new()
  timer.setTimeout(1000, function()
    completer:complete(true, 100)
  end)
  return completer:getFuture()
end

getTimeoutFuture()
:on(function(ok, val)
  if ok then
    p(val)
  else
    p("error!", val)
  end
end)
:transform(function(ok, val)
  if not ok then
    return ok, val
  end
  return ok, val + 100
end)
:chain(function(ok, val)
  if not ok then
    return Future.immediate(false, val) 
  end
  local completer = Completer:new()
  timer.setTimeout(100, function()
    completer:complete(true, val .. " wait 100ms")
  end)
  return completer:getFuture()
end)
:on(p)

-- An immediate future
f = Future.immediate(true, 'immediate')
f:on(p)

-- wait futures
f = wait(getTimeoutFuture(), getTimeoutFuture())
f:on(p)

About

Luvit port of Dart Future

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages