Skip to content

zsh1995/javaPromise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

java实现Promise风格的异步回调

调用方法

基本用法

new Promise((resolv, reject)-> {
    asycMethodWithCallback(/*回调方法 */ (val)-> {
        resolv.accept(val);
    })
});

串联多个异步方法

new Promise<Integer>((resolv, reject)-> {
    asycMethodWithCallback1(/* 回调方法 */ (val)-> {
        resolv.accept(val); // assume val is 10
    })
}).then((preValue) -> {
    return new Promise<Integer>((resolv, reject)-> {
        asycMethodWithCallback2(/* 回调方法 */ (val)-> {
            resolv.accept(val + 1); // val is 10
        });
    })
}).then((preValue) -> {
      return new Promise<Integer>((resolv, reject)-> {
          asycMethodWithCallback3(/* 回调方法 */ (val)-> {
            resolv.accept(val); // val is 11
          })
       });
  })

组合多个异步任务

  • Promise<List<T>> Promise.all(Iterator<Promise<T>>)
    组合多个Promise,组合成一个Promise<List<T>>,它将在所有异步任务完成后转为fulfilled状态。
  • Promise<T> Promise.race(Iterator<Promise<T>>)
    组合多个Promise,组合成一个Promise<T>,它将在任一异步任务完成后转为fulfilled状态。

定时任务

  • long setTimeout(Consumer, value, timeDelay)
    timeDelay毫秒后,将值 value 传入 consumer 消费。该方法返回一个 long 类型的 id ,可根据这个 id 取消定时任务。
  • clearTimeout(id)
    根据任务id,取消定时任务。(采用懒删除机制,只是使任务定时到后不执行)
  • long setInterval(Consumer, value, interval)
    任务将以 interval 毫秒为间隔进行调用。返回任务id值。
  • clearInterval(id)
    取消任务。
  • Promise<T> asycTimeout(val, timeDealy)
    返回一个Promise,将在timeDealy毫秒后转为fulfilled状态,并传递 val
  • waitShutdown()
    关闭Timer,等待Timer中所有任务完成。

更新历史

About

java实现Promise风格的异步回调

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages