I am playing with a javascript library. I am struggling to convert the following function to nim: function readBlob(blob) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.addEventListener('load', () => resolve(reader.result)); reader.addEventListener('error', reject) reader.readAsDataURL(blob); }) } Run
I am looking at [std/asyncjs](https://nim-lang.org/docs/asyncjs.html). I understand that `readBlob`'s signature in Nim would be: proc readBlob(blob):Future[Data] = ## Run But I am not sure if the right approach would be something like: proc newFileReader*():JsObject {.importcpp:"new FileReader()".} proc readBlob(blob):Future[Data] {.async.} = let reader = newFileReader() reader.readAsDataURL(blob) return reader.result Run or should I create a promise for that? This is a bit less clear for me. I don't know how to translate. Would it be something like the following? proc newFileReader*():JsObject {.importcpp:"new FileReader()".} proc readBlob(blob):Future[Data] {.async.} = result = newPromise() do (resolve: proc(response: Data)): callbackFunc() do (): let reader = newFileReader() reader.readAsDataURL(blob) return reader.result Run I got the feeling of being completely off.