Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 412новых вакансий за сутки·55 411вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 671
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 396 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

DevOps и инфраструктура

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

Аналитика и данные

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

Другие направления

  • Проджект-менеджер103
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме DartВсе вопросы
DartJuniorКодинг

Что такое Dart Futures и как использовать async/await?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Future<T> представляет результат асинхронной операции; async/await — синтаксический сахар, позволяющий писать асинхронный код линейно, не блокируя однопоточный event loop Dart.

async/await — синтаксический сахар над Future

Функция с модификатором async автоматически возвращает Future<T>. Ключевое слово await приостанавливает выполнение функции до завершения Future, не блокируя event loop — в этот момент могут выполняться другие задачи из очередей.

import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;

// Простой пример: цепочка Future через async/await
Future<Map<String, dynamic>> fetchUser(int id) async {
  final uri = Uri.parse('https://jsonplaceholder.typicode.com/users/$id');
  final response = await http.get(uri);

  if (response.statusCode != 200) {
    throw Exception('HTTP ${response.statusCode}');
  }

  return jsonDecode(response.body) as Map<String, dynamic>;
}

// Параллельные Future через Future.wait
Future<void> loadAll() async {
  // Последовательно: ~2 секунды
  // final a = await fetchUser(1);
  // final b = await fetchUser(2);

  // Параллельно: ~1 секунда
  final results = await Future.wait([
    fetchUser(1),
    fetchUser(2),
  ]);

  print(results[0]['name']); // Leanne Graham
  print(results[1]['name']); // Ervin Howell
}

// Обработка ошибок
Future<String> safeLoad(int id) async {
  try {
    final user = await fetchUser(id);
    return user['name'] as String;
  } on Exception catch (e) {
    print('Error: $e');
    return 'Unknown';
  }
}

void main() async {
  print(await safeLoad(1)); // Leanne Graham
  await loadAll();
}

Что такое Future в Dart

Future<T> — объект из dart:async, представляющий результат асинхронной операции, который будет доступен в будущем. Future находится в одном из трёх состояний: uncompleted, completed with value, completed with error. Dart использует однопоточный event loop с двумя очередями: event queue (I/O, таймеры) и microtask queue (Future.value, scheduleMicrotask). Microtask-очередь всегда опустошается перед следующим событием из event queue.

Полезные методы Future

  • Future.value(x) — Future, уже завершённый значением; callback вызывается в microtask очереди.
  • Future.error(e) — Future с ошибкой.
  • Future.delayed(duration, fn) — выполняет fn через заданное время.
  • Future.wait(list) — ждёт все Future параллельно, возвращает список результатов.
  • Future.any(list) — завершается, как только завершится первый Future.
  • .then(fn), .catchError(fn), .whenComplete(fn) — callback-стиль (альтернатива async/await).
  • .timeout(duration) — бросает TimeoutException если Future не завершился вовремя.

Event loop и порядок выполнения

void main() {
  print('1: sync');                              // сразу
  Future.value('microtask').then((_) => print('2: microtask')); // microtask queue
  Future(() => print('3: event queue'));         // event queue
  print('4: sync');                              // сразу
}
// Вывод: 1: sync, 4: sync, 2: microtask, 3: event queue

Подводные камни

  • Забытый await: вызов asyncFn() без await не ждёт завершения; функция запускается, но ошибки и результат теряются — используйте unawaited(asyncFn()) из dart:async для явного намерения.
  • Блокировка event loop: тяжёлые синхронные вычисления внутри async-функции блокируют весь event loop Flutter; выносите их в compute() или Isolate.run().
  • async в initState: Flutter запрещает await в initState; используйте паттерн Future.microtask(() async { ... }) или WidgetsBinding.instance.addPostFrameCallback.
  • BuildContext после await: контекст может стать невалидным после await; проверяйте mounted у StatefulWidget или используйте ref.read в Riverpod.
  • Необработанные ошибки в Future.wait: при ошибке одного Future весь Future.wait бросает исключение; остальные Future продолжают выполняться — для изоляции используйте eagerError: false или индивидуальные try-catch.
  • then() vs await: вложенные .then() быстро превращаются в callback hell; предпочитайте async/await для линейного кода.

Частые вопросы на собеседовании

  • В чём разница между var, dynamic и явными типами в Dart?
  • Как работает null safety в Dart? В чём разница между ?, ! и ???
  • Что такое isolates в Dart и чем они отличаются от потоков (threads)?
  • В чём разница между Future и Stream в Dart?

Типичные ошибки

  • Сводить «Dart Futures и как использовать async/await» к синтаксису и не объяснять event loop.
  • Игнорировать жизненный цикл, основной поток или момент освобождения ресурсов в сценарии dart-6.
  • Выбирать API по привычке, не проверяя состояние, ошибки, доступность и платформенные ограничения.

Что проверяет интервьюер

  • Формулирует точную модель для «Dart Futures и как использовать async/await» и подтверждает ее корректным примером.
  • Умеет связать ответ с Future и Stream, тестированием и отладкой на устройстве.
  • Называет ограничения подхода dart-6, включая производительность, память и сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме Dart →

Источники

  • https://dart.dev/libraries/async/async-await
←Предыдущий вопросВ чём разница между `Future` и `Stream` в Dart?Следующий вопрос→Для каких задач Dart является сильным выбором, а где лучше честно выбрать другой язык?

Связанные темы

Dartconcurrency-debuggingimplementation-reasoningMobile-Engineering