0.1.14 • Published 10 years ago

r6rs-async-io v0.1.14

Weekly downloads
2
License
MIT
Repository
-
Last release
10 years ago

r6rs-async-io

Asynchronous IO interface for r6rs.js

Usage

Usage is pretty straightforward.

import fs from 'fs';

import IOManager from 'r6rs-async-io';
import { Machine, assert } from 'r6rs';

let machine = new Machine();
let ioManager = new IOManager(machine);
ioManager.resolver.add('fs-read', (params, callback) => {
  assert(params, 'string');
  fs.readFile(params.value, 'utf8', (err, data) => {
    if (err) {
      callback([err.message, null], true);
    } else {
      callback([null, data], true);
    }
  });
});
ioManager.resolver.add('setInterval', (params, callback) => {
  assert(params, 'number');
  let timerId = setInterval(callback, params.value);
  return () => {
    clearInterval(timerId);
  };
});

machine.loadLibrary(ioManager.getLibrary());

machine.evaluate(`
(io-exec "fs-read" "java.md" (lambda (err data)
  (if (null? err)
    (display data)
    (display err)
  )
))
(io-listen "setInterval" 1000 (lambda ()
  (display "Hello!")
))
`);

Usage in Scheme

  • (io-exec name options callback) -> listener
  • (io-once name options callback) -> listener
  • (io-listen name options callback) -> listener
  • (io-cancel listener) -> null
0.1.14

10 years ago

0.1.13

10 years ago

0.1.12

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago