19 lines
588 B
Nim
19 lines
588 B
Nim
|
## asyncReadline as discussed at https://github.com/nim-lang/Nim/issues/11564
|
||
|
|
||
|
import asyncdispatch, threadpool
|
||
|
|
||
|
proc asyncReadline*(): Future[string] =
|
||
|
let event = newAsyncEvent()
|
||
|
let future = newFuture[string]("asyncReadline")
|
||
|
proc readlineBackground(event: AsyncEvent): string =
|
||
|
result = stdin.readline()
|
||
|
event.trigger()
|
||
|
let flowVar = spawn readlineBackground(event)
|
||
|
proc callback(fd: AsyncFD): bool =
|
||
|
future.complete(^flowVar)
|
||
|
true
|
||
|
addEvent(event, callback)
|
||
|
return future
|
||
|
|
||
|
|