coffeescript - $q defer 和 Promise 以及如何使用它们在渲染 View 之前为 Controller 加载数据

标签 coffeescript angularjs promise

这是我发现的最相关的事情:https://stackoverflow.com/a/11972028/110233

当我只想返回一个东西时,它似乎工作得很好,但是当其他东西依赖于第一件事时,我不确定如何返回多个东西。

因为这有点迟钝,这里有一个关于我当前正在做的事情的小例子:

window.EventRosterCtrl = ($scope, subevent) ->
    $scope.subevent = subevent

EventRosterCtrl.resolve = 
    subevent: (SubEvent, $route) ->
        deferred = $q.defer()

        SubEvent.get {subevent_id: $route.current.pathParams.subevent_id}, (subevent) ->
            deferred.resolve subevent

        return deferred.promise

这是我想要做的一个例子:

window.EventRosterCtrl = ($scope, subevent, addresses) ->
    $scope.subevent = subevent
    $scope.addresses = addresses

EventRosterCtrl.resolve = 
    subevent: (SubEvent, $route) ->
        deferred = $q.defer()

        SubEvent.get {subevent_id: $route.current.pathParams.subevent_id}, (subevent) ->
            deferred.resolve subevent

        return deferred.promise

    addresses: (User) ->
        deferred = $q.defer()

        # how do you get subevent called first and how would you access it here?
        for participant in subevent.participants
            User.get {user_id: participant.user}, (user) ->
                addresses[participant._id] = user.address

        deferred.resolve addresses

        return deferred.promise

最佳答案

您需要使用 .then() 链接 Promise

  var promise = firstOperation();
  promise = promise.then(function(value) {
    // do some more work
    return value; // it can be another promise
  });
  return promise; // this one will be resolved when both steps are resolved

关于coffeescript - $q defer 和 Promise 以及如何使用它们在渲染 View 之前为 Controller 加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307501/

相关文章:

javascript - 带有 will_paginate 的 jQuery Endless 页面在 Rails 中不起作用

javascript - 未捕获的语法错误 : missing ) after argument list using AngularJS

javascript - Protractor - 在履行完毕时返回待定的 promise

javascript - 从 "tailing"的尖端通过一系列函数 "thens"传递 Promise ?

javascript - 为什么 VS Code 在处理来自 Promise 中的 Reject 的异常时会中断?

javascript - 为什么在使用问号运算符时编译的 javascript 之间存在差异

coffeescript - Coffeescript中的现有条件赋值运算符

javascript - Angular HTML5 模式路由给资源找不到

javascript - 正确使用 async 和 wait

javascript - 一个使用另一个 promise 的 Angular promise ?