You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart异步编程问题:调用async函数输出Future实例而非预期结果

问题原因

createOrderMessage是被async修饰的异步函数,这类函数的返回值会被自动包装成Future对象。你直接调用print(createOrderMessage()),本质是在打印这个Future实例,而非等待异步操作完成后拿到的字符串结果,所以会输出Instance of '_Future'。

解决方法

有两种常见方式可以正确获取并打印异步函数的返回值:

方法1:将main函数改为async,用await等待结果

Dart允许将main函数标记为async,这样就能在内部使用await等待异步操作完成:

Future<String> createOrderMessage() async{
  var order =  await fetchUserOrder();
  return 'Your order is: $order';
}

Future<String> fetchUserOrder() =>
    Future.delayed(
      const Duration(seconds: 2),
      () => 'Large Latte',
    );

void main() async {
  print(await createOrderMessage());
}

方法2:使用Future的then方法处理回调

通过then方法注册回调函数,当Future执行完成时,会将结果传入回调进行处理:

Future<String> createOrderMessage() async{
  var order =  await fetchUserOrder();
  return 'Your order is: $order';
}

Future<String> fetchUserOrder() =>
    Future.delayed(
      const Duration(seconds: 2),
      () => 'Large Latte',
    );

void main() {
  createOrderMessage().then((message) => print(message));
}

两种方法都能让你得到预期输出:Your order is: Large Latte。

内容的提问来源于stack exchange,提问作者Berke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:06:51