angularjs - JS Promises - 使这个 promise 嵌套更有效的方法?

标签 angularjs node.js ionic-framework promise angular-promise

考虑这段代码:

WordPress.getMediaById(res.data.featured_media)
.then(function (res) {
  post.featuredMedia = res.data.source_url;

  WordPress.getUserById(post.authorId)
    .then(function (res) {
      post.authorName = res.data.name;

      $scope.post = {
        title: post.title,
        introAsHtml: post.introAsHtml,
        authorName: post.authorName,
        contentAsHtml: post.contentAsHtml,
        featured_media: post.featuredMedia
      };
    });
});

有什么办法可以让它在嵌套方面更加高效吗?将来我想向其中添加更多 promise 的功能,但我不确定这是否是正确的方式,否则,它与回调有何不同......

问候。

最佳答案

除非第二个异步请求不依赖于第一个调用的结果,否则我绝对不会嵌套 promise 。

在 Angular 的 $q 的帮助下,你可以这样:

$q.all([
  WordPress.getMediaById(mediaId),
  WordPress.getUserById(userId)])
.then(response => {
  post.featuredMedia = response[0].data.source_url;
  post.authorName = response[1].data.name;
  $scope.post = {
    title: post.title,
    introAsHtml: post.introAsHtml,
    authorName: post.authorName,
    contentAsHtml: post.contentAsHtml,
    featured_media: post.featuredMedia
  };
});

关于angularjs - JS Promises - 使这个 promise 嵌套更有效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36568019/

相关文章:

javascript - 如何更改 Angular pikaday 中的日期格式

css - 如何使 ng-show/ng-hide 过渡动画更流畅

node.js - 有没有办法防止Windows命令行中的env变量扩展百分比?

node.js 在变量中表达 mvc 方法名称

angularjs - 在 AngularJS 中为 $http 服务使用 JSONP 方法

javascript - AngularJs - 通过字段的度假村数组

node.js - npm install -g less 不起作用 : EACCES: permission denied

angularjs - 如何在 ionic 谷歌地图中长按/按住时获取坐标值

javascript - 如何将 Firebase 与 Ionic 集成?

ionic-framework - 带选项卡的 Ionic 导航后退按钮