Buenas:
Varias cosas:
1. mirate un poco lo que paso xve y entiende un poco como funcionan las promesas en js.
2. yo para que en algun momento no se mezcle el significado de search o bien lo llamas de otro modo o le pones delante algun prefijo.
Lo que hay que entender aqui es lo siguiente. ajax te va a desvolver el valor con retraso y no al momento como estas esperando. Aunque tu haces:
Ese return no es el return de search como imaginas. Eso se ejecuta cuando el ajax responde con los datos y se ejecuta esa funcion. Como hacemos para obtener ese valor? hay que regresar la promesa ajax y luego encadenar otro then de este modo:
No lo he probado pero seguro que funciona. Te marco los cambios para que se entienda. No es mi mejor explicacion.
Saludos.