Подождите, пока Firebase загрузится, прежде чем вернуться из функции

У меня есть простая функция загрузки данных из Firebase.

func loadFromFireBase() -> Array<Song>? {
    var songArray:Array<Song> = []

    ref.observe(.value, with: { snapshot in
        //Load songArray
    })

    if songArray.isEmpty {
        return nil
    }
    return songArray
}

В настоящее время эта функция возвращаетnil всегда, хотя есть данные для загрузки. Это происходит потому, что он никогда не попадает в блок выполнения, где он загружает массив до возврата из функции. Я ищу способ заставить функцию возвращаться только после вызова блока завершения, но я не могу поместить return в блок завершения.

Ответы на вопрос(2)

Ваш ответ на вопрос