if ``_functionTimeout = millis() + 1000;`` is called right before it millis() wraps, ``while (millis() < _functionTimeout)`` exit early or immediately.  It's once in a blue moon, but subtraction method is better way to CYA. ``while ((millis() - startTime) < 1000)``

That said, I'm not sure it's going to work how you intended it to.  If you break out of the inner while() loop because your ``wlan_scan_results_table[0] == 0`` (results are corrupted), and you intend to re-run the function, wouldn't you want to also reset ``_loopCount = 0;`` maybe right above the inner while() loop?  I don't understand why a 0 gets inserted into the results table, but if so and you don't reset _loopCount it's just going to continue on until it gets to 16.