JDeferred 是一个 Java 的 Deferred/Promise 库,类似 jQuery 的 Deffered 对象。
示例代码:
Deferred deferred = new DeferredObject(); Promise promise = deferred.promise(); promise.done(new DoneCallback() { public void onDone(Object result) { ... } }).fail(new FailCallback() { public void onFail(Object rejection) { ... } }).progress(new ProgressCallback() { public void onProgress(Object progress) { ... } }).always(new AlwaysCallback() { public void onAlways(State state, Object result, Object rejection) { ... } });
http://www.oschina.net/p/jdeferred package com.jiepu.testjdeferred; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.Callable; import java.util.concurrent.TimeUni
本库的地址:https://github.com/jdeferred/jdeferred 依赖方法: implementation 'org.jdeferred.v2:jdeferred-android-aar:2.0.0-beta1' 这个库是流式思想的实践,类同于rxjava,但更加简单(当然功能也没有rxjava强大) 1,核心promise的方法: // 万能方法:可以传入DoneCall
想象一下,你是一位顶尖歌手,粉丝没日没夜地询问你下个单曲什么时候发。 为了从中解放,你承诺(promise)会在单曲发布的第一时间发给他们。你给了粉丝们一个列表。他们可以在上面填写他们的电子邮件地址,以便当歌曲发布后,让所有订阅了的人能够立即收到。即便遇到不测,例如录音室发生了火灾,以致你无法发布新歌,他们也能及时收到相关通知。 每个人都很开心:你不会被任何人催促,粉丝们也不用担心错过单曲发行。
在JavaScript的世界中,所有代码都是单线程执行的。 由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现: function callback() { console.log('Done'); } console.log('before setTimeout()'); setTimeout(callback, 1000)
Promise模式 我们已经隐含地看到了使用Promise链的顺序模式(这个-然后-这个-然后-那个的流程控制),但是我们还可以在Promise的基础上抽象出许多其他种类的异步模式。这些模式用于简化异步流程控制的的表达——它可以使我们的代码更易于推理并且更易于维护——即便是我们程序中最复杂的部分。 有两个这样的模式被直接编码在ES6原生的Promise实现中,所以我们免费的得到了它们,来作为我们其
在深入介绍 Service Worker 之前,先来了解一下 Promise API。因为 Service Worker 的所有的异步接口内部都采用 Promise 来实现,因此学习了 Promise 讲能够有助于对 Service Worker 的理解。此外,本文还介绍了 Promise 的可靠性,链式调用的原理,并行执行的原理等较为深入的内容,感兴趣的读者也可以通过本文加深对 Promise
描述 ES6 Promise 的 polyfill。 Promise 是一种使用异步计算的机制。 签名 promise = new Promise(executor) 参数 类型 是否必须 描述 executor (Function, Function) -> any 是 一个函数,决定了 promise 是完成还是拒绝 返回 Promise 返回 Promise executor executo
在 Promise 类中,有 5 种静态方法。我们在这里简单介绍下它们的使用场景。 Promise.all 假设我们希望并行执行多个 promise,并等待所有 promise 都准备就绪。 例如,并行下载几个 URL,并等到所有内容都下载完毕后再对它们进行处理。 这就是 Promise.all 的用途。 语法: let promise = Promise.all([...promises...]
我们回顾一下 简介:回调 一章中提到的问题:我们有一系列的异步任务要一个接一个地执行 — 例如,加载脚本。我们如何写出更好的代码呢? Promise 提供了一些方案来做到这一点。 在本章中,我们将一起学习 promise 链。 它看起来就像这样: new Promise(function(resolve, reject) { setTimeout(() => resolve(1), 1000
网上已经有许多关于 Promise 的资料了,这里不在赘述。以下 4 个链接供读者学习: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise (基础) http://liubin.org/promises-book/ (开源 Promise 迷你书) http://fex.