角度js相当于q库中的done函数

4 promise angularjs angular-promise

我已经使用了node.js q库,最后有一个.done()函数可以在最后调用,无论成功与否.

我研究但找不到,有人能指出正确的方向吗?

Ben*_*aum 8

您将用于.catch(function(e){ throw e; })终止链.

什么.done确实在Q是终止承诺链,使未处理拒绝抛出.由于$ q $exceptionHandler用于抛出拒绝(与退回拒绝),因此.catch(function(e){ throw e; })可以起到同样的作用.

.finally.finallyQ 相当,它与$ q完全相同.

在Q中,做:

Q().then(handle).done(handleSuccess, handleFail);
Run Code Online (Sandbox Code Playgroud)

几乎相同:

Q().then(handle).then(handleSuccess, handleFail).done();
Run Code Online (Sandbox Code Playgroud)

这非常类似于:

$q.when().then(handle).then(handleSuccess, handleFail).catch(function(e){ throw e; });
Run Code Online (Sandbox Code Playgroud)

但是,由于$ q代表$exceptionHandler抛出异常(与Q或其他promise库不同).done,因为意外链终止的可能性要小得多,因此不太需要.为了显示,

Q().then(function(){ return JSON.parse("invalidJson"); });
Run Code Online (Sandbox Code Playgroud)

是Q中的吞噬错误,但在$ q中,

$q.when().then(function(){ return JSON.parse("invalidJson"); });
Run Code Online (Sandbox Code Playgroud)

这会导致控制台中出现大量红色警告(默认情况下).