-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Description
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)
Metadata
Metadata
Assignees
Labels
No labels