react-native-ping icon indicating copy to clipboard operation
react-native-ping copied to clipboard

Fatal issue when handler

Open jeromediaz opened this issue 4 years ago • 3 comments

On the following piece of code

[ping startPingingWithBlock:^(GBPingSummary *summary) { if (!ping) { return; } resolve(@(@(summary.rtt * 1000).intValue)); [ping stop]; ping = nil; } fail:^(NSError *_Nonnull error) { if (!ping) { return; } reject(@(error.code).stringValue,error.domain,error); [ping stop]; ping = nil; }];

there is a flaw: there is no guarantee the resolve (or reject) call will be finished before the second ping arrive, which would result on a fatal issue as those handlers can only be called once

those handlers should either :

  • be call asynchronously,
  • be called after [ping stop]

for those encountering the issue before it is corrected, you can handle the ping answer in js using a setTimeout(() => { // do your stuff} , 0)

jeromediaz avatar Sep 03 '20 15:09 jeromediaz

I think im stuck on this. Trying to ping multiple in a promise all array cause memory leak, but Im not sure where to put the setTimeout your refer to?

Edrick-Koch avatar Jun 29 '22 15:06 Edrick-Koch

This is really a fatal problem, I want to fix this in the next release

RoJoHub avatar Jul 28 '22 08:07 RoJoHub

Hi @jeromediaz @RoJoHub , I'm getting same fatal error.App is crashing after some time in production due to GBPing.listonce. Is is fixed or still pending ?

prakashw3expert avatar Oct 20 '22 12:10 prakashw3expert