dart - Future.then返回意外的空值

标签 dart future dart-async

以下方法将打印存储在Redis中的键的值

Future<String> getValue(String connectionString, String key) {
  return RedisClient.connect(connectionString).then((RedisClient client) {
        client.get(key).then((value) => print(value));
      });
}

但是当我尝试从main()打印值时,getValue方法将输出null而不是值(如上述方法):

library persistence;

Future<String> getValue(String connectionString, String key) {
  return RedisClient.connect(connectionString).then((RedisClient client) {
        client.get(key);
      });
}

--

import 'package:test/persistence.dart' as persistence;
main () {
  persistence.getValue(
                    "localhost:6379/0",
                    "key")
  .then((value) => print(value)); // **prints null.... WHY???**
}

似乎.then((value) => print(value))执行得太早了。

有谁能够帮助我?

最佳答案

return之前添加client.get(key)或使用简短方法形式=> client.get(key),则不需要return

关于dart - Future.then返回意外的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29194827/

相关文章:

c++ - 错误 C2248: 'std::future<Worldlet>::future':无法访问类 std::future<Worldlet> 中声明的私有(private)成员

scala - 如何在 Actor 的接收方法中使用 Future 来处理容错?

dart - Dart 中的 Stream<List<int>> 和 Stream<int> 有什么区别

Dart 语言支持 async/await 编程风格,还是类似的?

Dart Async 不等待完成

dart - Flutter:禁用应用程序的屏幕截图

flutter - 根据api更改状态列表项的动画

dart - 如何使用flutter和alarmManager从后台代码启动ui?

firebase - 如何使Flutter Firebase时间戳仅显示日期

Scalatest 异步测试套件与最终和WhenReady (org.scalatest.concurrent)