Как изменить мою простую асинхронную функцию Dart, чтобы использовать новое ключевое слово async?

У меня есть функция Dart, которая выглядит так:

Future beAwesome() {
  if (notActuallySupported) {
    return new Future.error(new UnsupportedError('uh oh'));
  }

  return new Future.value(42);
}

// ...

beAwesome().then((answer) => print(answer));

Я хочу использовать новую функцию async/await. Как изменить свою функцию?


person Seth Ladd    schedule 03.03.2015    source источник


Ответы (1)


Как правило, добавляйте слово async после подписи вашей функции и перед {. Кроме того, возвращайте необработанные значения вместо переноса этих значений в фьючерсы. Кроме того, выбрасывайте фактические исключения вместо переноса ошибок в будущее.

Вот новая версия:

Future beAwesome() async {
  if (notActuallySupported) {
    throw new UnsupportedError('uh oh');
  }

  return 42;
}

// ...

var answer = await beAwesome();
print(answer);

Обратите внимание, что вы все равно должны использовать Future в качестве аннотации возвращаемого типа.

person Seth Ladd    schedule 03.03.2015
comment
См. также stackoverflow.com/questions /27212220/ - person Günter Zöchbauer; 03.03.2015