one
Version:
One is a React framework for web, iOS, and Android apps.
38 lines (35 loc) • 1.04 kB
JavaScript
import { createWorkletRuntime, runOnRuntimeAsync } from "react-native-worklets";
var runtime = null;
var queue = Promise.resolve();
function createWorkletExecutor(calculate) {
var disposed = false;
return {
execute(request, isCurrent) {
var job = queue.then(async function() {
if (disposed || !isCurrent(request.revision)) return null;
runtime !== null && runtime !== void 0 ? runtime : runtime = createWorkletRuntime({ name: "one-background" });
var value = await runOnRuntimeAsync(runtime, function(input) {
"worklet";
var result = calculate(input);
if (result instanceof Promise) throw new TypeError("background computations must be synchronous");
return result;
}, request.input);
return {
revision: request.revision,
value
};
});
queue = job.then(function() {
return void 0;
}, function() {
return void 0;
});
return job;
},
dispose() {
disposed = true;
}
};
}
export { createWorkletExecutor };
//# sourceMappingURL=executor.native.js.map