跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • android/Kotlin: 请问如何实现 JavaScript 中的 promise 异步链式流程?
未分類
22 11 月 2020

android/Kotlin: 请问如何实现 JavaScript 中的 promise 异步链式流程?

android/Kotlin: 请问如何实现 JavaScript 中的 promise 异步链式流程?

資深大佬 : sprinter 4

我有一个下载 object 类 DownloadManager, 作用是下载文件, 见如下代码所示.

我先调用这个类的 beginDownload 方法, 开始下载文件, 文件下载完成后该类会通过广播 BroadcastReceiver 发送下载成功的消息.

object DownloadManager {

var downloadID: Long = 0  fun beginDownload(context: Context, url: String): Long {      val file = File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), File(url).name)      val request =          DownloadManager.Request(Uri.parse(url))              .setDestinationUri(Uri.fromFile(file)) // Uri of the destination file              .setAllowedOverMetered(true) //  Allow download on Mobile network      val dm = context.getSystemService(DOWNLOAD_SERVICE) as DownloadManager      downloadID = dm.enqueue(request) // enqueue the download request.      return downloadID  }    val br: BroadcastReceiver = object : BroadcastReceiver() {      override fun onReceive(context: Context, intent: Intent) {          val id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1)          if (downloadID.toLong() === id) { 

//下载成功 Toast.makeText(context, “Download complete”, Toast.LENGTH_SHORT).show()

        }  }  }} 

我的问题:

我以前用 JavaScript 时习惯用 promise 来根据下载成功与否执行下面动作, 代码如下:

new Promise(function(resolve, reject) {

用 DownloadManager 类 下载第一个文件

}).then(function(result) {

用 DownloadManager 类 下载第一个文件

}).then(function(result) {

用 DownloadManager 类 下载第一个文件

})

请问上述链式的 promise 结构在 android kotlin 里如何写?

谢谢指教! 小女感激不尽

大佬有話說 (6)

  • 資深大佬 : karnaugh

    RxAndroid ?

  • 資深大佬 : xFrye

    可以看下 kotlin 的 flow

  • 資深大佬 : luwies

    RxJava 应该是可以做到

  • 資深大佬 : kazeik

    rxjava 可以

  • 資深大佬 : winterbells

    用协程吧,可以把所有 then 行删掉,同步的写法

  • 資深大佬 : mxalbert1996

    喜欢 Promise 的语法就用 RxJava,喜欢 async/await 的语法就用 coroutines

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具