如何处理Dart Future中的其他内容

时间:2014-06-24 09:36:27

标签: dart google-drive-api

我需要让Google云端硬盘成为文件夹的fileId。如果该文件夹不存在,我需要创建一个具有该名称的文件夹并返回fileId。使用fileId,我需要做其他工作。

Dart中的Google Drive API对我来说没问题,我可以使用Dart创建一个文件夹。问题是关于未来。 代码如下:

  drive.files.list(q:"title='TEST'").then((result){        
    if(result.items.length == 0) {
      driveclient.File file = new driveclient.File.fromJson({"title":"TEST", "mimeType": "application/vnd.google-apps.folder"});
      drive.files.insert(file).then((result2) {
        return result2.id;           
      });
    } else {
      return result.items[0].id;
    }
  });

当TEST存在时,返回id。但是如果TEST没有,那么函数错误就是因为没有返回。

怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您需要从第4行调用的then方法返回未来:

drive.files.list(q:"title='TEST'").then((result){        
  if(result.items.length == 0) {
    driveclient.File file = new driveclient.File.fromJson({"title":"TEST", "mimeType": "application/vnd.google-apps.folder"});
    return drive.files.insert(file).then((result2) {
      return result2.id;           
    });
  } else {
    return result.items[0].id;
  }
});

then()返回一个新的未来,它将从您作为参数提供给方法的方法返回的值完成。那么()也足够智能来解决所有嵌套的未来,所以你总是在then()方法中处理一个值,而不是Future的实例。