angular then()里面的多个函数

时间:2015-10-14 16:24:34

标签: javascript angularjs promise angular-promise

有时我会看到两个以上的函数用逗号分隔,在AngularJs中的promise then()里面。这里的任何人都可以帮助解释结构的含义吗?

e.g。

then(function(response){..}, function(response){..}, function(response){..}, function(response){..});

据我所知,如果then()中有两个函数。第一个函数将在履行承诺时运行,否则第二个函数将在发生任何错误时运行。这种结构看起来不像链式承诺...

非常感谢你们的任何帮助: - )

1 个答案:

答案 0 :(得分:3)

好:

  • 第一个函数是履行处理程序,它将在promise解析为某个值(通常)时执行。
  • 第二个函数是拒绝处理程序,当promise通过拒绝(或在处理程序中抛出异常)解决错误时它将执行。
  • 第三个功能是进度,这是一个非标准和不推荐使用的功能,永远不会成为ECMAScript承诺的一部分 - 最好完全避免它,因为它不能很好地构成。 Angular的新$ q API也不支持它。
  • 传入的第三个函数的任何内容都会被处理程序忽略,并且不起作用。

以下是所有三个被调用的示例:

var good = $q.when(3);
good.then(x => console.log("Successful"));
var bad = $q.reject(Error("Bad")); // always reject with errors
bad.then(null, x => console.log("Failed"));
var d = $q.defer(); // don't do this like... ever
d.promise.then(null, null, x => console.log("Progressed"));
d.notify("event notification"); // never use this in real code ;)