FFI Requires setTimeout
BebeSparkelSparkel opened this issue · 4 comments
When using FFI for Aff I need to use setTimeout
before calling onSuccess
or else the page hangs as if onSuccess
was never called. Feels like there is some listener setup in the wrong order or onSuccess
is defined after the return
.
Failing example without timeout.
exports.failing = s => (onError, onSuccess) => {
onSuccess(s)
return (cancelError, cancelerError, cancelerSuccess) => {cancelerSuccess()}
}
Working example with timeout.
exports.working = s => (onError, onSuccess) => {
setTimeout(() => onSuccess(s), 100)
return (cancelError, cancelerError, cancelerSuccess) => {cancelerSuccess()}
}
I cannot reproduce this with a modified version of the EffectFn test that always resolves immediately. I suspect that you have some sort of race condition in your code. Could you post a self contained example?
Created an example
This is because you are typing it as Aff
. Aff's representation is opaque. You need to type it as EffectFnAff
and use the Compat
module.
purescript-aff/src/Effect/Aff/Compat.purs
Lines 43 to 46 in 390857f
Sorry about that. Just fixed it and am still having the same problem