增加block回调 和cancel功能