$q两种常见使用方式

查看更多

$q(function resolver (resolve, reject) {})

var iWantResolve = true;

function es6promise() {
    return $q(function (resolve, reject) {
        $timeout(function () {
            if (iWantResolve) {
                resolve("es6promise resolved");
            } else {
                reject("es6promise reject");
            }
        }, 1000)
    })
}
  • promise.then(successCb, errCb, notifyCb)
    • 其中successCb 将在 promise resolve 后被调用, errCb 将在 promise reject 后被调
    • notifyCb 将在 deferred.notify 后被调用, 可以多次调用
    • promise.catch == promise.then(null, errCb), 用于处理之前没有被处理的 rejected promise
    • promise.finally 将最后被调用, 一般用于资源释放的清理操作
es6promise()
    .then(function (data) {
        console.log(data);
    })
    .catch(function (err) {
        console.log(err);
    });

// if(iWantResolve == true) output: es6promise resolved
// if(iWantResolve = false) output: es6promise reject

$q.defer()

function commonJsPromise() {
    var deferred = $q.defer();
    $timeout(function () {
        deferred.notify("commonJS notify");
        if (iWantResolve) {
            deferred.resolve("commonJS resolved");
        } else {
            deferred.reject("commonJS reject");
        }
    }, 500);
    return deferred.promise;
}

commonJsPromise()
    .then(function /** success callback**/(data) {
        console.log(data);
    }, function /** error callback **/ (err) {
        console.log(err);
    }, function /** progress callback **/ (update) {
        console.log(update);
    }); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文适用的读者 本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,...
    HZ充电大喵阅读 12,057评论 6 19
  • 00、前言Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区...
    夜幕小草阅读 6,426评论 0 12
  • Promiese 简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果,语法上说,Pr...
    雨飞飞雨阅读 8,664评论 0 19
  • 不知道从何时开始,风靡起了一类神奇的组织,家长群。 在过去网络不是很发达的时候,老师们和家长联系,属于一对多的联系...
    睡觅阅读 2,726评论 0 0
  • 灵武帝尊
    065be06ee29d阅读 1,076评论 0 0

友情链接更多精彩内容