【问题标题】:Promises in AngularAngular 中的承诺
【发布时间】:2015-09-26 17:10:51
【问题描述】:

我将 Angular 与 CoffeeScript 结合使用。 我有 3 个函数 getSomeData1(), getSomeData2(), getSomeData3() 需要按顺序执行。我有以下,它工作正常。

    getSomeData1: ->
        @http.get("someRestUrl1")
           .success((data) =>
              getSomeData2()

    getSomeData2: ->
        @http.get("someRestUrl2")
           .success((data) =>
              getSomeData3()

    getSomeData3: ->
        @http.get("someRestUrl3")

我想让它更具可读性,将所有功能放在一个地方。类似的,

getSomeData1()
.then(getSomeData2())
.then(getSomeData3())

这将有助于轻松理解操作顺序。

有什么建议可以实现这一目标吗?我需要使用 $q 吗?

【问题讨论】:

    标签: javascript angularjs coffeescript promise angular-promise


    【解决方案1】:

    有什么建议可以实现吗?

    只需省略那些 success 调用并直接从每个函数返回 $http 承诺。并且不要忘记将 callbacks 传递给 .then(),而不是函数调用。

    getSomeData1: ->
        @http.get("someRestUrl1")
    getSomeData2: ->
        @http.get("someRestUrl2")
    getSomeData3: ->
        @http.get("someRestUrl3")
    
    getSomeData1().then(getSomeData2).then(getSomeData3)
    

    我需要使用$q吗?

    不,因为$http 已经为您服务了。你可以消费承诺。

    【讨论】:

    • 谢谢。是否可以将第一次调用检索到的数据传递给第二次调用?
    • 是的,getSomeData2 确实将其作为参数接收。只需给回调函数一个参数:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2015-08-12
    相关资源
    最近更新 更多