q promise链中“完成”的目的是什么?

时间:2015-05-19 10:17:13

标签: javascript q

done承诺链中使用Q的目的是什么? IIUC它传播错误。如果是这样,我怎么能抓住这个错误?

以下代码输出:Uncaught Error: hello world。我怎么能抓到这个错误?我使用.catch语法,还是有其他方式?

<html>
<head>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.2/q.js"></script>
</head>

<body>
</body>
<script>
try {
        var foo = {
          bar: function() {
            var d = Q.defer();
            d.resolve();
            return  d.promise;
          }
        };

        function bam() {
          throw new Error('hello world');
        }

        foo.bar().then(bam).done(); // what is the purpose of done?
} catch (e) {
    alert(e);
}
</script>

</html>

1 个答案:

答案 0 :(得分:2)

正如消息来源中的文档评论所说:

  

终止一系列承诺,强制拒绝作为例外。

https://github.com/kriskowal/q/blob/v1/q.js#L1768