deferred-future 0.1.5

模仿 jQuery.Deferred(),允许从 Future 实现类实例的外部对正在 pending 的 Future 对象进行 resolve 或 reject 处理。
Documentation
#[cfg(not(target_arch = "wasm32"))]
fn main() {
    use ::deferred_future::LocalDeferredFuture;
    use ::futures::{future, executor::LocalPool, task::LocalSpawnExt};
    use ::futures_time::{prelude::*, time::Duration};
    use ::std::time::Instant;
    let deferred_future = LocalDeferredFuture::default();
    let defer = deferred_future.defer();
    let mut executor = LocalPool::new();
    executor.spawner().spawn_local(async move {
        future::ready(()).delay(Duration::from_secs(2_u64)).await;
        defer.borrow_mut().complete(Ok::<String, String>("2秒钟后才被延迟填入的消息".to_string()));
    }).unwrap();
    let start = Instant::now();
    let message = executor.run_until(deferred_future);
    let end = Instant::now();
    let elapse = end.duration_since(start).as_secs();
    println!("为了收到消息<{}>,主协程先后等待了 {}", message.unwrap(), elapse);
}
#[cfg(target_arch = "wasm32")]
fn main() {}