栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有$ q的AngularJS执行顺序—链式承诺

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有$ q的AngularJS执行顺序—链式承诺

您在问如何在promise中 链接 功能。

3)如何在它们之间传输数据?

4)如何使以下功能取决于其先前的结果?

返回 链中 下一个函数的数据(或promise):

var p2 = p1.then ( function (data) {     var nextData = someFn(data);     return nextData;});var p3 = p2.then ( function (nextData) {     var nextData2 = someOtherFn(nextData);     return nextData2;});//return for further chainingreturn p3;

1)如果例如checkTokenOnline不能正常运行,我不想执行其余功能,那么如何在这一点上退出(退出,中断等)。

拒绝 承诺,请让您的函数 抛出 错误。链将跳过所有

.then
方法,直到您提供错误处理程序。

var p2 = p1.then ( function checkTokenonline (response) {  if ( isBadFn(response) {      throw error;  } else {      return nextData;  }   }) .then ( someFn     ) .then ( someOtherFn    ) .catch ( function (error) {          // someFn and someOtherFn skipped          //log error          throw error;   }); //return for further chaining return p2;

2)我如何设置其中一些并行,其中一些串行?

要使两个功能并行运行,请做出两个承诺。使用

$q.all
等待他们俩来完成。

var p1 = $q.when ( fn1() );var p2 = $q.when ( fn2() );var p3 = $q.all ( [p1, p2] );var p4 = p3.then ( function (responseList) {      var response1 = responseList[0];      var response2 = responseList[1];      return something;}). catch ( function (error) {      //log error      throw error;});//return for further chainingreturn p4;

请注意,这

$q.all
没有 弹性 。如果任何承诺引发错误,
.then
则将跳过该方法,并且仅第一个错误将进入该
.catch
方法。

函数式编程的经验法则 总是返回一些东西


有用的链接

  • AngularJS $ q参考-链接诺言
  • 您错过了承诺的重点。
  • Ninja Squad-有关AngularJS承诺的陷阱,反模式和提示


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号