@sergey_fs

Не возвращает JSON при использовании goroutine?

Добрый день. Подскажите, не могу получить ошибку в JSON, если отдаю в обработку в одельную горутину
весь код

конструкция
func() {
    err := add_user(name,pass)
    if err != nil {
        jsresponce, _ := json.Marshal(Error{"   User "+name+" is already exist  !!!!  "})
        io.WriteString(w, string(jsresponce))
        return
    }
}()

так возврашает ошибку в JSON строке

если же запускать как
go func() {
    err := add_user(name,pass)
    if err != nil {
        jsresponce, _ := json.Marshal(Error{"   User "+name+" is already exist  !!!!  "})
        io.WriteString(w, string(jsresponce))
        return
    }
}()

то не возврашает, можете подсказать, в чем проблема ?
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
Потому что вы не ждёте завершения горутины, у вас выход из функции json_directory происходит раньше, чем горутина заканчивает работу. Соответственно, не успеваете увидеть результат.
В вашей ситуации вообще не вижу смысла выводить это в горутину. Всё равно придётся ждать завершения, чтобы показать ответ, так что можно просто оставить в виде первого варианта.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы